Int MPI_Comm_size( MPI_Comm comm, int* size) -

|
Int MPI_Comm_size( MPI_Comm comm, int* size) -
|
bet | 6/18 | Sana | 07.02.2024 | Hajmi | 435,82 Kb. | | #152842 |
Bog'liq Mustaqil ishi Xakimov Allamurod (3)Int MPI_Comm_size( MPI_Comm comm, int* size) - comm guruhidagi parallel jarayonlarning umumiy sonini aniqlash.
comm – guruh identifikatori;
OUT size - guruh hajmi.
Int MPI_Comm_rank( MPI_Comm comm, int* rank) - comm guruhidagi jarayon raqamini aniqlash.
&rankda qaytarilgan qiymat 0 dan size_of_group-1 gacha bo’ladi.
comm - guruh identifikatori;
OUT rank – comm guruhidagi chaqirilgan jarayon raqami .
Protsessor nomini olish uchun MPI_Get_processor_name funksiyasidan foydalaniladi.
int MPI_Get_processor_name( name, resultlen )
char *name;
int *resultlen;
Parametrlar:
name - protsessor nomi. Bu kamida MPI_MAX_PROCESSOR_NAME o‘lchamdagi massiv bo‘lishi kerak.
Name argumenti kamida MPI_MAX_PROCESSOR_NAME belgidan iborat bo‘lishi kerak. MPI_GET_PROCESSOR_NAME name ga ko‘p belgilar qo‘shishi mumkin. Belgilarning haqiqiy soni resultlen chiqish parametrida qaytariladi
Bu protseduralar MPI kutubxonasi orqali ma'lumot almashish va amalga oshirish amalga oshirishda juda keng foydalaniladi. Ularning yordamida paralel kompyuterlarda ishlovchi dasturlar parallel ishga tushiriladi, ma'lumotlar almashish, jamlash, tarqatish va boshqa amalga oshirishlar amalga oshiriladi.
MPI protseduralari MPI standartiga muvofiq tuzilgan bo'lib, ularga ma'lumotlarni almashish uchun yuqori darajali kommunikatsiya mehanizmlari va ma'lumotlar almashish operatsiyalari bilan birgalikda foydalanish imkoniyatini beradi. Ushbu protseduralar MPI kutubxonalarida implementatsiyalangan bo'lib, ularning to'liq o'zbekcha dokumentatsiyasi MPI sayti yoki MPI kutubxonasining o'zining hujjatlari orqali topilishi mumkin.
MPI da xabar almashish turlari va ular orasidagi farqlar
MPI (Mavzu Prognozlashdirish Intizomi, inglizcha "Message Passing Interface") kutubxonasida xabar almashishning bir nechta turilari mavjud. Bu turilar orqali parallel kompyuterlar orasida ma'lumotlarni almashish, tarqatish va ko'chirish amalga oshiriladi. Quyidagi eng umumiy xabar almashish turlari MPI protseduralari orqali amalga oshiriladi:
Point-to-Point Xabar Almashishi:
MPI jarayonlari o'rtasidagi aloqaning asosiy mexanizmi xabarlarni uzatish va qabul qilishdir.
Xabar o’z ichiga bir nechta malumotlarni oladi:
•jo‘natuvchi – xabar jo‘natuvchining darajasi (guruhdagi raqami);
•oluvchi – oluvchining darajasi;
•belgi - har xil turdagi xabarlarni ajratish uchun ishlatilishi mumkin;
•kommunikator – jarayonlar guruhi kodi.
Yuborish va qabul qilish operatsiyalari blokirovka qiluvchi yoki bloklanmaydigan bo'lishi mumkin. Bloklanmaganmaydigan operatsiyalar uchun tayyorlikni tekshirish va bajarilishini kutish funktsiyalari belgilanadi.Aloqaning yana bir usuli - masofaviy xotiraga kirish , bu sizga masofaviy jarayonning xotira maydonini o'qish va o'zgartirish imkonini beradi. Mahalliy jarayon masofaviy jarayonning xotira maydoniga (jarayonlar tomonidan ko'rsatilgan oyna ichidagi) murojat qilishi va aksincha bo’lishi mumkin, shuningdek, masofaviy jarayonga uzatilgan ma'lumotlarni uning xotirasida mavjud bo'lgan ma'lumotlar bilan birlashtirishi mumkin (masalan, yig'ish orqali). Xotiraga masofaviy kirishning barcha operatsiyalari bloklanmaydi, biroq blokirovka qiluvchi sinxronlash funksiyalari bajarilishidan oldin va keyin chaqirilishi kerak.
Har bir jarayonning o'ziga xos identifikatori va ajratilgan manzil maydoni mavjud.
MPI-da umumiy o'zgaruvchilar yoki ma'lumotlar mavjud emas.
Jarayonlar jamoaviy axborot almashish operatsiyalarini amalga oshirish uchun guruhlarni tashkil qilishi mumkin.
MPI - bu xabarlarni uzatish nuqtai nazaridan parallel jarayonlarning ishlashini qo'llab-quvvatlash uchun mo'ljallangan funktsiyalar kutubxonasi.
Jarayon raqami manfiy bo'lmagan butun son bo'lib, har bir jarayonning o'ziga xos atributidir.
Xabarning atributlari jo'natuvchining jarayon raqami, qabul qiluvchining jarayon raqami va xabar identifikatoridir.
MPI_Status tuzilmasida quyidagi maydonlar mavjud:
MPI_Source(jo'natuvchining jarayon raqami),
MPI_Tag (xabar identifikatori),
MPI_Error(xato kodi); qo'shimcha maydonlar ham bo'lishi mumkin.
Xabar identifikatori (msgtag) - 0 dan 32767 gacha bo'lgan manfiy bo'lmagan butun son bo'lgan xabar atributi. Jarayonlar guruhlarga birlashtiriladi, guruh ichida barcha jarayonlar qayta nomlanadi.
MPI-dagi asosiy operatsiya xabarlarni uzatishdir.Deyarli barcha asosiy aloqa shakllari MPIda amalga oshiriladi: nuqtadan nuqtaga, jamoaviy va bir tomonlama.
Dasturlar parallel jarayonlarni yaratish va tugatish vositalarini va ishlaydigan jarayonlarning o'zaro ta'sirini o'z ichiga oladi.
Jo’natish jarayonlari quyidagicha bo’lishi mumkin: Individual turi ya’ni nuqtadan nuqtaga.Kollektiv - operatsiyada kommunikatorning barcha protsessorlari ishtirok etadi.
Barcha protseduralar quyidagi sinflarga bo'linadi: blokirovka qiluvchi (sinxronizatsiya bilan) va blokirovkasiz (asinxron) protseduralar.
Bloklirovkali xabar almashish protseduralari ishni to shart bajarilgunga qadar to'xtatib turadi. Asinxrondan qaytish aloqa operatsiyasini ishga tushirgandan so'ng darhol sodir bo'ladi.
Bloklirovkali xabar almashish bilan ehtiyotkorlik bilan foydalanish lozim.
Asinxron operatsiyalardan foydalanish ma'lumotlar massivlaridan ehtiyotkorlik bilan foydalanishni talab qiladi.
1. Xabarlar malumotlar blogi – void*
2. Xabar ma'lumotlari quyidagilar.
(a) ma'lumotlar turi –MPI_Datatype;
(b) ma'lumotlar soni.
3. Xabarni qabul qiluvchi va jo'natuvchi haqida ma'lumot.
(a) Komunikator – MPI_Comm tipidagi jarayonlar guruhi identifikatori, yuqori darajadagi kommunikator – MPI_COMM_WORLD;
(b) qabul qiluvchining darajasi - ko'rsatilgan kommunikatordagi qabul qiluvchi jarayonning raqami;
(c) jo'natuvchi darajasi - ko'rsatilgan kommunikatordagi jo'natuvchi jarayonning raqami
MPI_ANY_SOURCE orqali tegishli kommunikatorda barcha jo‘natuvchilardan xabarlar olishingiz mumkin.
4. Xabar tegi. int turining ixtiyoriy soni. Siz xabarlarni ma'lum bir teg bilan qabul qilishingiz mumkin, ixtiyoriy tegdagi xabarni qabul qilish uchun -MPI_ANY_TAG dan foydalanish mumkin.
Sinxronizatsiya bilan nuqtadan nuqtaga xabar jo’natish (biri jo'natuvchi, ikkinchisi qabul qiluvchi)
|
| |