logo

IKKI JARAYON O’RTASIDA XABAR ALMASHISH

Загружено в:

15.08.2023

Скачано:

0

Размер:

787.6962890625 KB
IKKI J ARAYON  
O’RTASIDA X ABAR 
ALMASHISH IKKI JARAYONO’RTASIDA XABAR 
ALMASHISH
•
MPI jarayonlari o'rtasidagi aloqaning asosiy mexanizmi xabarlarni uzatish va 
qabul qilishdir.
•
Xabar o’z ichiga bir nechta malumotlarni oladi:
•
• jo‘nat uv chi  – xabar jo‘natuvchining darajasi (guruhdagi raqami);
•
• oluv chi  – oluvchining darajasi;
•
• bel gi  - har xil turdagi xabarlarni ajratish uchun ishlatilishi mumkin;
•
• k ommunik at or  – jarayonlar guruhi kodi.
•
Yuborish va qabul qilish operatsiyalari  blok irov k a qiluv chi  yoki 
blok lanmay digan  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. Xabar uzatish modeli Xabar jo’natish – o’zaro aloqa 
yo’lidir.
•
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.   Terminalogiya
•
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. Xabar jo’natish va qabul qilish 
•
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. Xabar almashish turi
•
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. Xabarni tashkil qiluvchilar.
•
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. MPI va C malumot tiplari 
muvofiqligi. MPI va C++ malumot tiplari muvofiqligi.
№ MPI C++   БАЙТ   Ди апазон 
при ни м аем ы х  
значени й
1 MPI_DOUBLE                  double  8 -9 223 372 036 854 775 
808 .0   /   9 223 372 036 
854 775 807.0
2 MPI_FLOAT float  4 -2 147 483 648.0 /   2 147 
483 647.0
3 MPI_INT   int        4 -2 147 483 648   /   2 147 
483 647
4 MPI_CHAR     char 1 0    /   255
5 MPI_LONG   signed long int  4 -2 147 483 648   /   2 147 
483 647
6   MPI_LONG_DOUBLE   long double 10 3.4e-4932  /  3.4e+4932
7 MPI_SHORT signed short int    2 -32 768     /   32 767
8   MPI_UNSIGNED unsigned int  4 0      /   4 294 967 295
9 MPI_UNSIGNED_CHAR  unsigned char 1 0      /   255
10 MPI_UNSIGNED_LONG   unsigned long int 4 0      /   4 294 967 295
11 MPI_UNSIGNED_SHORT unsigned short int  2 0      /   65 535
12 MPI_BYTE     Типы данных MPI_BYTE и MPI_PACKED не соответствуют типу данных 
Fortran или C ,C++ . Значение типа MPI_BYTE состоит из байта (8 двоичных 
цифр). Байт не интерпретируется и отличается от символа. Разные 
машины могут   иметь разные представления символов или могут 
использовать более одного байта для представления символов. С другой  
стороны, байт имеет одинаковое двоичное значение на всех машинах.13 MPI_PACKED Blokirovkali xabar jo’natish.
•
Sinxronizatsiya bilan nuqtadan nuqtaga xabar jo’natish (biri 
jo'natuvchi, ikkinchisi qabul qiluvchi)
•
int MPI_Send(v oid* buf, int  count , MPI_Dat at y pe dat at y pe, int  
dest , int  msgt ag, MPI_Comm comm)
•
buf  – xabar yuborish buferining bosh manzili;
•
count  - xabardagi uzatiladigan elementlar soni;
•
datatype  - uzatilgan elementlarning turi;
•
dest  - qabul qilish jarayonining raqami;
•
msgtag  - xabar identifikatori;
•
comm  - bu guruh identifikatori.
•
Xabarning barcha elementlari bufer bufida ketma-ket joylashgan.  
O'z-o'ziga xabar yuborishga ruxsat beriladi, lekin  bu boshi berk 
ko'chaga olib kelishi mumkin. Xabarni qabul qilish
•
int  MPI_Recv (v oid* buf, int  count , MPI_Dat at y pe dat at y pe, int  
source, i nt  msgt ag, MPI_Comm comm, MPI_St at us*st at us)
•
OUT buf   – xabarni qabul qiluvchi bufer  manzili;
•
count  - qabul qilingan xabardagi elementlarning maksimal soni;
•
dat at y pe - qabul qilingan xabar elementlarining turi;
•
source  - jo'natuvchi jarayonning raqami;
•
msgt ag  - qabul qilingan xabarning identifikatori;
•
OUT st at us  – qabul qilingan xabar parametrlari.
•
Blokirovkalash pastki dastur qaytgandan so'ng xabarning barcha 
elementlari qabul qilinishini va bufer bufiga joylashtirilishini 
ta'minlaydi.Agar jarayon boshqa jarayonga ikkita xabar yuborsa va 
ikkala xabar ham bir xil MPI_Recv chaqiruviga mos kelsa, birinchi 
yuborilgan xabar avval qabul qilinadi. Xabar statusi
•
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. Ikki jarayon o’rtasida xabar 
almashish
•
0-jarayon 1-jarayonga 
xabar yuboradi va undan 
javob kutadi.
•
Dastur 3 ta jarayonda 
ishga tushirilgan va bu 
dasturda 0- va 1-0 
jarayonlar o’rtasida xabar 
almashinyapti.   Topshiriqlar
•
1) Bir jarayondan 2- jarayonga MPI_INT tipidagi ma’lumot jo’nating va undan  MPI_INT 
tipidagi ma’lumot qabul qiling va olingan ma’lumotlarni ekranga chop eting (har 
ikkala jarayon uchun ham).
•
2) Bir jarayondan 2- jarayonga MPI_FLOAT tipidagi ma’lumot jo’nating va undan  
MPI_INT tipidagi ma’lumot qabul qiling va olingan ma’lumotlarni ekranga chop eting 
(har ikkala jarayon uchun ham).
•
3) Bir jarayondan 2- jarayonga MPI_DOUBLE tipidagi ma’lumot jo’nating va undan  
MPI_FLOAT tipidagi ma’lumot qabul qiling va olingan ma’lumotlarni ekranga chop 
eting (har ikkala jarayon uchun ham).
•
4) Bir jarayondan 2- jarayonga MPI_FLOAT tipidagi ma’lumot jo’nating va undan  
MPI_FLOAT tipidagi ma’lumot qabul qiling va olingan ma’lumotlarni ekranga chop 
eting (har ikkala jarayon uchun ham).
•
5) Bir jarayondan 2- jarayonga 2 ta MPI_INT tipidagi ma’lumot jo’nating va bu 
ma’lumotlarni ekranga chop eting.
•
6) Bir jarayondan 2- jarayonga 2 ta MPI_FLOAT tipidagi ma’lumot jo’nating va bu 
ma’lumotlarni ekranga chop eting.
•
7) Bir jarayondan 2- jarayonga 2 ta MPI_DOUBLE tipidagi ma’lumot jo’nating va bu 
ma’lumotlarni ekranga chop eting.
•
8) Bir jarayondan 2- jarayonga 2 ta  ma’lumot (MPI_INT va MPI_FLOAT tipidagi ) 
jo’nating va bu ma’lumotlarni ekranga chop eting.
•
9)  Bir jarayondan 2- jarayonga 2 ta  ma’lumot (MPI_DOUBLE va MPI_FLOAT tipidagi ) 
jo’nating va bu ma’lumotlarni ekranga chop eting.
•
10)  Bir jarayondan 2- jarayonga 2 ta  ma’lumot (MPI_DOUBLE va MPI_INT tipidagi ) 
jo’nating va bu ma’lumotlarni ekranga chop eting. •
11)  Bir jarayondan 2- jarayonga 2 ta  teg orqali turli xil tipdagi  (MPI_DOUBLE 
va MPI_INT)  malumot jo’nating va bu ma’lumotlarni ekranga chop eting.
•
12)  Bir jarayondan 2- jarayonga 2 ta  teg orqali turli xil tipdagi  (MPI_FLOAT 
va MPI_INT)  malumot jo’nating va bu ma’lumotlarni ekranga chop eting.
•
13)  Bir jarayondan 2- jarayonga 2 ta  teg orqali turli xil tipdagi  (MPI_FLOAT 
va MPI_DOUBLE)  malumot jo’nating va bu ma’lumotlarni ekranga chop eting.
•
14)  Bir jarayondan 2- jarayonga 3 ta  teg orqali turli xil tipdagi  3ta malumot 
jo’nating va bu ma’lumotlarni ekranga chop eting.
•
15) Bir jarayondan 2- jarayonga 2 ta  2-jarayondan 1- jarayonga 1 ta turli 
tipdagi ma’lumot jo’nating va bu ma’lumotlarni ekranga chop eting.
•
16) Bir jarayondan 2- jarayonga 2 ta  2-jarayondan 1- jarayonga 3 ta turli 
tipdagi ma’lumot jo’nating va bu ma’lumotlarni ekranga chop eting.
•
17) Bir jarayondan 2- jarayonga 3 ta  2-jarayondan 1- jarayonga 1 ta turli 
tipdagi ma’lumot jo’nating va bu ma’lumotlarni ekranga chop eting.
•
18) Bir jarayondan 2- jarayonga 2 ta  2-jarayondan 1- jarayonga 1 ta turli 
tipdagi va turli teglar orqali ma’lumot jo’nating va bu ma’lumotlarni ekranga 
chop eting.
•
19) Bir jarayondan 2- jarayonga 2 ta  2-jarayondan 1- jarayonga 3 ta turli 
tipdagi va turli teglar orqali ma’lumot jo’nating va bu ma’lumotlarni ekranga 
chop eting.
•
20) Bir jarayondan 2- jarayonga 3 ta  2-jarayondan 1- jarayonga 1 ta turli 
tipdagi va turli teglar orqali ma’lumot jo’nating va bu ma’lumotlarni ekranga 
chop eting. Variantlar
**Variant raqami jurnaldagi raqam bilan mos qilib tanlansin
Variant  
raqami 1-
sav ol  
raqam
i 2- sav ol 
raqami 3- sav ol 
raqami Variant  
raqami 1- sav ol 
raqami 2- sav ol 
raqami 3- sav ol 
raqami
1
1 2 20 14
14 5 14
2
2 16 4 15
15 18 9
3
3 8 19 16
16 12 2
4
4 13 8 17
17 3 11
5
5 19 7 18
18 10 6
6
6 7 13 19
19 16 17
7
7 11 5 20
20 9 3
8
8 15 10 21
1 18 9
9
9 6 19 22
2 7 17
10
10 4 18 23
3 13 15
11
11 1 16 24
4 17 9
12
12 14 1 25
5 20 15
13
13 17 15 Natijalar  va vazifalarni qay tarzda bajarilganligini hisobotda 
yoriting.

IKKI J ARAYON O’RTASIDA X ABAR ALMASHISH

IKKI JARAYONO’RTASIDA XABAR ALMASHISH • MPI jarayonlari o'rtasidagi aloqaning asosiy mexanizmi xabarlarni uzatish va qabul qilishdir. • Xabar o’z ichiga bir nechta malumotlarni oladi: • • jo‘nat uv chi – xabar jo‘natuvchining darajasi (guruhdagi raqami); • • oluv chi – oluvchining darajasi; • • bel gi - har xil turdagi xabarlarni ajratish uchun ishlatilishi mumkin; • • k ommunik at or – jarayonlar guruhi kodi. • Yuborish va qabul qilish operatsiyalari blok irov k a qiluv chi yoki blok lanmay digan 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.

Xabar uzatish modeli

Xabar jo’natish – o’zaro aloqa yo’lidir. • 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.

Terminalogiya • 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.