int MPI_Win_create (void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win) – RMA operatsiyalarini bajarish uchun ushbu jarayonlar tomonidan ishlatilishi mumkin bo‘lgan oyna obyektini qaytaradi. Har bir jarayon mavjud xotiradagi oynani belgilaydi, u comm o‘zaro munosabat kommumikatsion guruhidagi jarayonlarga masofaviy kirish uchun foydalanishga imkon beradi. Oyna base manzildan boshlanadigan size baytlardan iborat. Jarayon hech qanday xotirani tavsiflamasligi mumkin va bunda size = 0. Manzilli arifmetikasini soddalashtirish uchun RMA operatsiyalari siljish birligini belgilaydigan argumentni taqdim etadi: maqsadli jarayon uchun RMA operatsiyasida ofset argumentining qiymati oyna yaratilganda maqsad tomonidan belgilangan disp_unit omili bilan o‘lchanadi.
int MPI_Win_free (MPI_Win *win) – oyna obyektini bo‘shatadi va MPI_WIN_NULL qiymati bilan bo‘sh deskriptorni qaytaradi.
Oyna bilan ishlash funksiyalari kollektivtirdirlar!
3. MPI_Win_create funksiyasidan foydalanib, bir tomonlama aloqaga ruxsat berish uchun “oyna” yarating.
4. Bir tomonlama aloqaning asosiy funksiyalarini bilan tanishing:
int MPI_Put (void *origin_addr, int orign_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_datatype target_datatype, MPI_Win win) – boshlang‘ich tugundagi origin_addr manzilidan boshlab, win va target_rank juftligi tomonidan belgilangan maqsad tuguniga kelib chiqqan holda, origin_datatype tomonidan belgilangan turdagi origin_count ketma-ket yozuvlarini uzatadi . Ma'lumotlar maqsadli buferga maqsad _addr = oyna _ bazasi + maqsad _ disp * disp _ birligida yoziladi , bu erda oyna _ tayanch va disp_birlik oynaning asosiy manzili va ofset birligi bo'lib, oyna ob'ekti tomonidan ishga tushirilganda aniqlanadi . qabul qiluvchi jarayoni. Belgilangan bufer target_count va target_datatype argumentlari bilan aniqlanadi.
int MPI_Get (void *origin_addr, int orign_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) – MPI_Get MPI_Put ga o'xshaydi , faqat ma'lumotlarni uzatish teskari yo'nalishda sodir bo'ladi . Ma'lumotlar maqsadli xotiradan tashabbuskor xotirasiga ko'chiriladi. Origin_datatype original buferdagi bir-biriga mos keladigan yozuvlarni aniqlay olmaydi. Belgilangan bufer belgilangan oyna ichida bo'lishi kerak va ko'chirilgan ma'lumotlar maqsadli buferga yaxlitlashsiz mos kelishi kerak.
5. N parametrini barcha jarayonlarga o‘tkazish uchun bir tomonlama aloqa funksiyalaridan foydalaning.
6. Har bir jarayon bo‘yicha hisob-kitoblarni bajaring.
7. Bir tomonlama aloqa funksiyalaridan foydalangan holda natijani nol jarayonda to‘plang.
8. Ilovangizni kompilyatsiya qiling va ishga tushiring. Ma’lumotlar to‘g‘ri ekanligiga ishonch hosil qiling.