Topshiriq № Mavzu: mpi paketi yordamida misollar yechish Ishdan maqsad


MPI_Send va MPI_Isend protseduralarining har biri tomonidan yuborilgan xabar MPI_Recv va MPI_Irecv protseduralarining istalgani tomonidan qabul qilinishi mumkin



Yüklə 261,33 Kb.
səhifə13/21
tarix07.01.2024
ölçüsü261,33 Kb.
#208656
1   ...   9   10   11   12   13   14   15   16   ...   21
amaliy7

MPI_Send va MPI_Isend protseduralarining har biri tomonidan yuborilgan xabar MPI_Recv va MPI_Irecv protseduralarining istalgani tomonidan qabul qilinishi mumkin.
int MPI_Irecv (void *buf, int count, MPI_ Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Request *request) – MPI_Recv kabi xabarni qabul qilish, lekin qismiy dasturdan qaytish buf buferida xabar qabul qilinishini kutmasdan, qabul qilish jarayonini inisializatsiya qilingandan so‘ng darhol sodir bo‘ladi. Qabul qilish jarayonining tugashini request parametri va MPI_Wait va MPI_Test protseduralari yordamida aniqlash mumkin.
int MPI_Wait (MPI_Request *request, MPI_Status *status) – asinxron request identifikatori bilan bog‘liq MPI_Isend yoki MPI_Irecv asinxron protseduralarining tugashini kutish. Qabul qilingan holda, qabul qilingan xabarning atributlari va uzunligi status parametri yordamida odatiy tarzda aniqlanishi mumkin.
3. MPI_Init va MPI_Finalize funksiyalariga murojaatni dastur kodiga kiriting.
4. buf o‘zgaruvchisini e’lon qilish orqali xabar yarating (masalan, int buf). 0 jarayoni orqali ushbu o‘zgaruvchiga ba’zi qiymatlarni ta’minlang.
5. MPI_Isend funksiyasidan foydalanib, buf o‘zgaruvchining qiymatini 0 jarayondan 1 jarayonga yuborishni initzializatsiya qiling.
6. MPI_Irecv funksiyasidan foydalanib, 1-jarayonda 0-jarayondan xabar olishni initzializatsiya qiling.
7. MPI_Wait funksiyasidan foydalanib, xabarni qabul qilish va yuborish jarayonlari tugashini kuting. 1 jarayonda qabul qilingan xabarni printf yordamida ekranga chop eting.
8. Ilovangizni kompilyatsiya qiling va ishga tushiring. Chiqish to‘g‘ri ekanligiga ishonch hosil qiling.
8-topshiriq. “nuqta-nuqta” aloqalar: “halqalar bo‘yicha siljish” sxemasi
1. MPI qo‘llab-quvvatlashi bilan Microsoft Visual Studio 2022 da mpi_ring loyihasini yarating (1-topshiriqqa qarang).
2. MPI_Init va MPI_Finalize funksiyalariga murojaatlarni dastur kodiga kiriting.
3. Har bir jarayonning nomerini rink o‘zgaruvchisiga yozing.
4. Dasturdagi parallel jarayonlarning umumiy sonini size o‘zgaruvchisiga yozing.
5. Butun sonli o‘zgaruvchi bufni e’lon qilish, unga rank qiymatini berish orqali xabar yarating.
6. “halqalar bo‘yicha siljish” jarayonining aloqa sxemasida barcha jarayonlar bir xil harakatlarni amalga oshiradi: ular keyingi jarayonga xabar yuboradilar, keyin oldingi jarayondan xabar oladilar. Buni quyidagi tarzda amalga oshirishingiz mumkin:

  • Xabar yuboriladigan jarayon nomerini aniqlang. Xabar yuborish uchun bloklanmagan MPI-funksiyasiga murojaat qiling.

  • Xabar qabul qilinadigan jarayon nomerini aniqlang. Xabarni qabul qilish uchun bloklanmagan MPI-funksiyasiga murojaat qiling.

  • MPI_Wait funksiyasiga yoki birlashtirilgan MPI_Waitall funksiyasiga ikkita marta murojaat qilish orqali almashinuv operatsiyalari tugashini kuting.


Yüklə 261,33 Kb.

Dostları ilə paylaş:
1   ...   9   10   11   12   13   14   15   16   ...   21




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin