Bu holda jarayon xaqiqatda ma’lumotlar jo’natmaydi va dasturni bajarishda
chaqirishda qo’llanilgan o’zgaruvchilarning ixtiyoriy birini berilgan xabarni
buzilishga xavfsiramasdan ishlatish mumkin. Buni kafolatlash usulini tanlash: oraliq
buferga nusxalash yoki bevosita dest jarayoniga berish mpi ni yaratayotgan
42
Shuni ta’kidlab o’tish kerak, mpi_send jarayonidan qaytish xabar dest
jarayonning jarayon elementini tark etganini ham bildirmaydi. Faqat joriy prosedurani
chaqirishda foydalanilgan o’zgaruvchilarni bexatar o’zgartirish kafolatlanadi. Shunga
o’xshash noaniqliklar har doim ham foydalanuvchilarni qanoatlantirmaydi. Xabarlar
almashish imkoniyatini kengaytirish uchun mpi da uchta prosedura mavjud. Bu
proseduralardagi parametrlar ham xuddi mpi_send dagi kabi, biroq ularni har biri
o’ziga xos xususiyatga ega. mpi quyidagi ma’lumotlar almashish proseduralar
modifikasiyalarini qo’llab quvvatlaydi:
- mpi_vsend buferatsiya bilan xabar uzatish. Agar uzatilgan xabar qabul
qiluvchi tomonidan qabul qilinmasa, u holda xabar maxsus buferga yoziladi va tezda
proseduradan qaytariladi. Bu prosedurani bajarilishi mos qabul qiluvchi prosedurani
chaqirilishiga bog’liq emas, qolaversa, agar buferda yetarlicha joy bo’lmasa prosedura
xatolik kodini qaytaradi. Buferlash uchun massiv belgilashni ishini foydalanuvchi o’z
zimmasiga olishi kerak.
- mpi_ssend sinxronlab xabarlar uzatish, ushbu proseduradan chiqish faqat
jo’natilgan xabar qabul qiluvchi jarayon tomonidan qabul qilingandan keyin mumkin.
Bu bilan xabar almashishni sinxronlab tugatish orqali jo’natma buferidan takroriy
foydalanish imkoniyati yaratiladi va dasturdagi qabul qiluvchi jarayon xabarni qabul
qilishi kafolatlanadi, sinxronlab xabar almashish dastur bajarilishini sekinlatadi, biroq
sistemada xabarlarni ortiqcha buferlardan holi qiladi.
-mpi_rsend tayorgarlik bo’yicha xabar uzatish. bu proseduradan faqat qabul
qiluvchi jarayon qabulni amalga oshirgandan keyin foydalanish mumkin, aks holda bu
prosedura chaqirilishi noto’g’ri hisoblanadi va uning natijasi mavxum bo’ladi.
mpi_rsend prosedurasi chaqirilishidan oldin xabar qabul qilinganligini kafolatlash
uchun jarayonlarni yaqqol va noyaqqol sinxronlash opersiyalaridan foydalanish kerak,
ko’pincha mpi_rsend prosedurasi uzatuvchi va qabul qiluvchi o’rtasidagi muloqat
bayonnomasini
qisqartiradi
va
ma’lumotlar almashishdagi sarf-harajatlarni
kamaytiradi.
43
Foydalanuvchi jo’natuvchi jarayonda mpi_vsend prosedurasini chaqirganda
xabarlarni buferlash uchun zarur maxsus massiv belgilash kerak.
mpi_vuffyer_attach(vuf,sizye,iyerr)
vuf(*)
intyegyer sizye, iyerr
size o’lchami buf massivini buferlab xabar jo’natishda ishlatish uchun yaratish,
bunday buferdan har bir jarayonda faqat bittasi bo’lishi kerak, bufer sifatida
belgilangan massivdan dasturda maqsadlarda ishlatmaslik kerak. Buferlash uchun
yaratilgan massiv o’lchami umumiy o’lchamidan kichik bo’lmasligi kerak va
minimum mpi_vsend_overhead konstantasidan aniqlangan qiymatga teng bo’lishi
kerak.
mpi_vuffyer_dyetach(vuf, sizye, iyerr)
vuf (*)
intyegyer sizye, iyerr
Do'stlaringiz bilan baham: