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.
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
Do'stlaringiz bilan baham: |