G‘afarov, A. F. Galimyanov parallel hisobiyotlar qo'llanma Qozon


Download 1.46 Mb.
bet61/85
Sana24.12.2022
Hajmi1.46 Mb.
#1062519
1   ...   57   58   59   60   61   62   63   64   ...   85
Bog'liq
ParVychGafGal (1)

MPI_Send(void* ma'lumotlar, int soni, MPI_Datatype ma'lumotlar turi, int destination, int) teg, MPI_Comm kommunikator)xabar yuboring
MPI_Recv(void* ma'lumotlar, int count, MPI_Datatype ma'lumotlar turi, int source, int teg, MPI_Comm kommunikatori, MPI_Status* holati) – xabarni qabul qilish
Birinchi argument (ma'lumotlar) ma'lumotlar buferi, ikkinchisi (hisoblash) va uchinchisi (ma'lumotlar turi)

argumentlar mavjud elementlarning soni va turini tavsiflaydi




bufer. MPI_Send sanashga teng elementlarning aniq sonini yuboradi va MPI_Recv bir xil miqdordagi elementlarni oladi. to'rtinchi va
beshinchi argumentlar yuborish (manba) va qabul qilish jarayonining darajasini belgilaydi va xabarning tegi (tegi) . Oltinchi argument kommunikatorni, oxirgisi esa ko'rsatadi
argument ( faqat MPI_Recv uchun) qabul qilinganlar haqida ma'lumot beradi xabar.

    1. MPI elementar ma'lumotlar turlari

MPI_Send va MPI_Recv funktsiyalari MPI ma'lumotlar turlaridan foydalanadi yuqoriroqda xabarning tuzilishini aniqlash vositasi sifatida
Daraja. Misol uchun, agar jarayon bitta butun sonni boshqasiga yuborishni xohlasa, u MPI_INT ma'lumotlar turidan foydalanadi . Boshqa elementar ma'lumotlar turlari MPIlar quyida ularning ekvivalent C ma'lumotlar turlari bilan keltirilgan.

MPI ma'lumotlar turi

MPI_SHORT MPI_INT MPI_LONG MPI_LONG_LONG


MPI_UNSIGNED_CHAR MPI_UNSIGNED_SHORT MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_UNSIGNED_LONG_LONG
C ekvivalenti
qisqa int

int

long int long long int
imzosiz belgi imzosiz qisqa int imzosiz int unsigned long int
unsigned long long int


Machine Translated by Google



to'xtatishga qaror qilmaguncha bir-birlariga xabarlar yuboring. Asosiy


dastur kodining qismlari shunday ko'rinadi.




int main (int argc, char** argv) {


const int PING_PONG_LIMIT = 10;


MPI_Init (NULL, NULL);


int world_rank;


MPI_Comm_rank(MPI_COMM_WORLD, &dunyo_darajasi);


int world_size;


MPI_Comm_size(MPI_COMM_WORLD, &dunyo_hajmi);


agar (dunyo hajmi != 2) {


fprintf(stderr, "%s\n uchun dunyo o'lchami ikkita bo'lishi kerak", argv[0]);


MPI_Abort(MPI_COMM_WORLD, 1);


}


int ping_pong_count = 0;


int
Download 1.46 Mb.

Do'stlaringiz bilan baham:
1   ...   57   58   59   60   61   62   63   64   ...   85




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling