204-guruh Abduvaliyev Asqarali
Download 0.49 Mb.
|
6-topshiriq
- Bu sahifa navigatsiya:
- Int MPI_Irecv(void*buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Request*request) request
- MPI_Iprobe()
204-guruh Abduvaliyev Asqarali MPI_Isend, MPI_Irecv, MPI_Iprobe, MPI_Wait, MPI_Waitall, MPI_Test, MPI_Testall funksiyalarini barchasiga alohida alohida dastur tuzib qay holatlarda va qanday ishlatilishini tushintirib bering. Quyidagi kod C++ da MPI_Isend() va MPI_Irecv() funksiyalarini ishlatadigan to'liq dasturni ko'rsatadi. Dastur yagona xabar jo'natuvchisi va qabul qiluvchisi (rank 0 va rank 1) orasida xabar almashishni o'rganadi: Bu dasturda yagona xabar jo'natuvchisi (rank 0) massivni to'ldiradi va uni MPI_Isend() orqali o'zi ichiga jo'natadi. Rank 1 processor esa MPI_Irecv() orqali messagingni qabul qiladi, qayta ko'rib chiqib, uni o'ziga yozadi va uni MPI_Isend() yordamida qayta jo'natadi. Va buning natijasida yagona xabar jo'natuvchisi uni qabul qiladi, qayta ko'rib chiqib va uni chiqaradi. Kod natijasi: MPI_Irecv() Bu method ansixron tarzda ma’lumot qabul qilish uchun ishlatilinadi. MPI_Irecv methodi quyidagicha bo’ladi: Int MPI_Irecv(void*buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Request*request) request: asinxron xabarni qabul qilish identifikatori. Xabarni qabul qilish MPI_Recv ga o'xshaydi, lekin pastki dasturdan qaytish buferda xabar qabul qilinishini kutmasdan, qabul qilish jarayoni ishga tushirilgandan so'ng darhol sodir bo'ladi. Bu misolda 1 jarayondan 2 – jarayonga ma’lumot yuborilmoqda va MPI_Irecv bilan qabul qilinmoqda va dastur ma’lumotni ansixron tarzda muvofaqiyatli qabul qilib olmoqda. Natija konsilda chiqarildi. MPI_Iprobe() MPI_Iprobe funksiyasi MPI komunikatsiyalari orqali xabar olishni tekshirish uchun ishlatiladi. MPI_Iprobe ishlatilishi quyidagicha: Int MPI_Iprobe( int source, int msgtag, MPI_Comm comm, int*flag, MPI_Status*status) Misol uchun: MPI_Testall() MPI_Test va MPI_Testall funksiyalari, MPI_Isend va MPI_Irecv kabi asinkron komandalarni tekshirish uchun ishlatiladigan funksiyalar hisoblanadi. MPI_Testall funksiyasi esa berilgan hamma so'rovlarning javoblari keldimi kelmaganimi aniqlab chiqadi. Bu quyidagi kabi ishlatiladi: int MPI_Testall (int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses) Bu yerda yerda request aloqa jarayonini identifikatori, flag agar aloqa hodisasi tugallangan bo’lsa TRUE aks holda fals qaytaradi, status aloqa jarayoni (xabar) holati. count aloqa hodisalari soni. Misol uchun: Download 0.49 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling