Topshiriq № Mavzu: mpi paketi yordamida misollar yechish Ishdan maqsad


int MPI_Comm_group (MPI_Comm comm, MPI_Group *group)



Yüklə 261,33 Kb.
səhifə18/21
tarix07.01.2024
ölçüsü261,33 Kb.
#208656
1   ...   13   14   15   16   17   18   19   20   21
amaliy7

int MPI_Comm_group (MPI_Comm comm, MPI_Group *group) mavjud kommunikator bilan bog‘langan guruhni olish uchun ishlatiladi. Keyinchalik, mavjud guruhlar asosida yangi guruhlar yaratilishi mumkin.
MPI_Group_incl (MPI_Group oldgroup, int n, int *ranks, MPI_Group *group) mavjud oldgroup guruhlardan n ta jarayonni o‘z ichiga olgan yangi group guruh yaratadi, ularning ranglari ranks massivida keltiriladi.
int MPI_Group_excl (MPI_Group oldgroup, int n , int *ranks, MPI_Group *group) oldgruop guruhlardan yangi group guruhni yaratadi, u o‘zida ranglari ranks massivida keltirilgan ranglarga mos kelmaydigan n ta jarayonni tavsiflaydi.
Guruhdan foydalanish tugagandan so‘ng, int MPI_Group_free (MPI_Group *guruh) funksiyasi yordamida o‘chirish kerak.
Kommunikatorlar bilan ishlash uchun quyidagi asosiy MPI funksiyalarini bilan tanishing:
int MPI_Comm_create (MPI_Comm oldcom, MPI_Group group, MPI_Comm *newcomm) – mavjud kommunikator jarayonlari qismiy to‘plamidan yangi kommunikator yaratish. Kommunikatorlarni yaratish operatsiyasi manba kommunikatorining barcha jarayonlari tomonidan bajarilishi kerak. group ga tegishli bo‘lmagan jarayonlarda newcomm MPI_COMM_NULL nol kommunikatorining qiymatini oladi.
int MPI_Comm_free (MPI_Comm *comm) o‘chirish uchun kommunikatorni belgilaydi, diskreptor MPI_COMM_NULL ga o‘rnatiladi. Ushbu kommunikatordan foydalanadigan har qanday kutayotgan operatsiyalar odatdagidek yakunlanadi; obyekt, agar unga boshqa faol havolalar bo‘lmagan holda, faktik o‘chiriladi.
3. Yangi guruhlarni yaratish uchun MPI_Group turidagi oldgroup va group o‘zgaruvchilarini e’lon qiling.
4. Yangi kommunikator yaratish uchun MPI_Comm turidagi newcomm o‘zgaruvchisini e’lon qiling.
5. MPI_Init va MPI_Finalize funksiyalariga murojaatlarni dastur kodiga kiriting.
6. Har bir jarayonning nomerini rank o‘zgaruvchisiga yozing.
7. Dasturdagi parallel jarayonlarning umumiy sonini size o‘zgaruvchisiga yozing.
8. ranks butun sonli massivni yarating, u yerga dasturda mavjud bo‘lgan juft sonli jarayonlar nomerlarini joylashtiring:
ranks = {0,2,4,...,size}, bu yerda size – dasturdagi jarayonlar soni.
9. Chunki yangi guruhlar mavjud bo‘lganlar asosida yaratilishi kerak; MPI_Comm_group dan foydalanib, dasturning barcha jarayonlaridan boshlang‘ich jarayonlar guruhini oling, ya’ni, MPI_COMM_WORLD kommunikatoriga kiritilganlardan. Guruhni oldgroup o‘zgaruvchisiga yozing.
10. MPI_Group_incl funksiyasidan foydalanib group jarayonlar guruhini yarating.
11. group guruhlari uchun MPI_Comm_create funksiyasidan foydalanib newcomm kommunikatorini yarating.

12. MPI_Comm_size va MPI_Comm_rank funksiyalaridan foydalanib, yangi kommunikator newcommdagi jarayonlar sonini va har bir jarayonning nomerini aniqlang. Jarayon nomerini newrank o‘zgaruvchisiga va parallel jarayonlar umumiy sonini newsize o‘zgaruvchisiga yozing.
Eslatma: MPI_Comm_size va MPI_Comm_rank faqat newcomm kommunikatorining bir qismi bo‘lgan jarayonlarda chaqirilishi kerak. newcomm != MPI_COMM_NULL sharti bajarilganda jarayon newcomm kommunikatoriga kiradi.
13. newcomm kommunikatorining null jarayoni orqali faqat message satrini qabul qiling.
14. MPI_Bcast funksiyasidan foydalanib, message satrini newcomm kommunikatorining barcha jarayonlariga yuboring.
15. Dasturdagi har bir jarayon uchun quyidagi xabarni ekranga chop qiling:
«MPI_COMM_WORLD: from . New comm: from . Message = »
16. MPI_Group_free yordamida group va oldgroup guruhlarni o‘chiring.
17. MPI_Comm_free funksiyasi yordamida newcomm kommunikatorini o‘chiring. MPI_Comm_free funksiyasi faqat o‘chiriladigan kommunikatorning bir qismi bo‘lgan jarayonlarda chaqirilishi kerak.
18. Ilovangizni kompilyatsiya qiling va ishga tushiring. Ma’lumotlar to‘g‘ri ekanligiga ishonch hosil qiling.

Yüklə 261,33 Kb.

Dostları ilə paylaş:
1   ...   13   14   15   16   17   18   19   20   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