|
Sharov rashiov nomidagi samarqand davlat
|
bet | 4/18 | Sana | 07.02.2024 | Hajmi | 435,82 Kb. | | #152842 |
Bog'liq Mustaqil ishi Xakimov Allamurod (3)MPI_status strukturasi
MPI_status struktura MPI kutubxonasida foydalaniladigan ma'lumotlar to'plamini saqlash uchun ishlatiladi. Ushbu struktura ma'lumot almashish operatsiyalari natijasida olinadigan ma'lumotlarni saqlab turadi.
Qabul qilingan xabarning atributlarini status massivining elementlaridan aniqlash mumkin.
status parametri - MPI_SOURSE (haqiqiy xabar darajasi), MPI_TAG (haqiqiy teg) va MPI_ERROR (xato kodi) maydonlari bilan oldindan belgilangan MPI_Status turidagi strukturadir.Qabul qilish jarayonining raqami aniq ko'rsatilishi kerak.Agar bitta jarayon bitta MPI_Recv ga mos keladigan ikkita xabarni boshqa jarayonga yuborsa, birinchi xabar birinchi bo'lib qabul qilinadi.Agar xabar turli jarayonlar tomonidan yuborilgan bo'lsa, unda qabul qilish tartibi aniqlanmagan.
Bir tomondan, biz MPI_Recv ga xabar kutilayotgan vazifaning raqamini va uning identifikatorini ko’rsatamiz; va boshqa tomondan, biz ularni status strukturasida MPI dan olamizmi? Buning sababi, MPI_Recv joker argumentlar bilan chaqirilishi mumkin ("har qanday narsani/har kimdan qabul qilish") va bunday ma'lumotlarni qabul qilishdan so'ng, dastur status tuzilmasidan MPI_SOURCE va MPI_TAG maydonlarini o'qish orqali haqiqiy raqam/identifikatorni o'rganadi.
MPI_ERROR maydoni odatda tekshirilishi shart emas - MPI tomonidan o'rnatilgan standart xato ishlov beruvchisi muvaffaqiyatsizlikka uchragan taqdirda MPI_Recv dan qaytishdan oldin dasturning bajarilishini to'xtatadi. Shunday qilib, MPI_Recv dan qaytgandan so'ng, status.MPI_ERROR maydoni faqat 0 ga teng bo'lishi mumkin (MPI_SUCCESS);
MPI_Status turida kiruvchi xabarning haqiqiy uzunligini yozib oladigan maydon mavjud emas. Uzunlikni shunday topish mumkin
MPI_status strukturasining ma'lumotlarni saqlab turish uchun kerakli maydonlar quyidagilardir:
MPI_SOURCE: Bu maydon ma'lumotni yuborgan protsessning identifikatori (rank) ni saqlaydi.
MPI_TAG: Ushbu maydon almashish operatsiyasi orqali olinayotgan ma'lumotlarni turi (tag) ni saqlaydi.
MPI_ERROR: Ushbu maydon almashish operatsiyasi natijasida yuzaga kelgan xatolarni saqlaydi.
MPI_status strukturasining foydalanishida MPI kutubxonasi tomonidan o'rnatilgan almashish operatsiyasi tugagandan so'ng, MPI_Status tipidagi obyekt yaratiladi va ushbu obyektning ma'lumotlari MPI_recv() yoki MPI_Wait() kabi funktsiyalarga o'tkaziladi. MPI_Status obyekti dastur tomonidan o'zida saqlangan ma'lumotlarni o'qish, aniqlash va saqlash uchun foydalaniladi.
MPI kutubxonasida MPI_Status strukturasining ma'lumotlari to'g'ridan-to'g'ri o'zgartirib bo'lmaydi. Ular faqat MPI_recv(), MPI_Wait() va hokazo funktsiyalari ishlatilganda yangilanadi. Boshqacha bir ifoda bilan aytganda, MPI_Status strukturasining ma'lumotlari, MPI kutubxonasi tomonidan so'rovga javob sifatida olinadigan ma'lumotlarni saqlab turadigan o'zgartirilmaydigan obyekt hisoblanadi.
MPI_status strukturasining foydalanilishi dastur tomonidan almashish operatsiyalari natijasida yuborilgan ma'lumotlarni aniqlash, qarshilik qilish va boshqa qo'llanmalarni amalga oshirishda juda kerakli bo'ladi.
|
| |