Mavzu: mpi-2 standarti tushunchasi. Mundarij kirish. 5 I. Bob parallel kompyuterlar tasnifi 8



Download 64 Kb.
bet6/10
Sana05.09.2021
Hajmi64 Kb.
#165272
1   2   3   4   5   6   7   8   9   10
Bog'liq
kurs

2.2 Kollektiv asoslar 


Kollektiv funktsiyalar jarayonlar guruhidagi barcha jarayonlar o'rtasidagi aloqani o'z ichiga oladi (bu butun jarayonlar havzasini yoki dastur tomonidan belgilangan pastki qismni anglatishi mumkin). Odatda funktsiya - bu MPI_Bcastqo'ng'iroq (" translyatsiya " uchun qisqartma ). Ushbu funktsiya bitta tugundan ma'lumotlarni oladi va jarayonlar guruhidagi barcha jarayonlarga yuboradi. Teskari operatsiya - bu MPI_Reduceqo'ng'iroq, bu guruhdagi barcha jarayonlardan ma'lumotlarni olib, operatsiyani bajaradi (masalan, yig'ish) va natijalarni bitta tugunda saqlaydi. MPI_Reduceko'pincha har bir protsessor ma'lumotlarning bir qismida ishlaydi va keyin ularni natijaga birlashtirgan katta taqsimlangan hisob-kitoblarning boshida yoki oxirida foydalidir.

Boshqa operatsiyalar yanada murakkab vazifalarni bajaradi, masalan n ta ma'lumotni MPI_Alltoallqayta tartibga soladi , masalan n- tugun har biridan ma'lumotning n- elementini oladi .

Ko'p MPI funktsiyalari jarayonlar o'rtasida yuboriladigan ma'lumotlar turini belgilashni talab qiladi. Buning sababi shundaki, MPI turli xil tugunlarda turlicha aks ettirilishi mumkin bo'lgan heterojen muhitni qo'llab-quvvatlashga qaratilgan [14] (masalan, ular har xil endiannessga ega bo'lgan turli xil CPU arxitekturalarida ishlayotgan bo'lishi mumkin ), bu holda MPI dasturlari ma'lumotlar konvertatsiyasini amalga oshirishi mumkin . [14] C tili bir turini o'zi, bir parametr sifatida qabul qilinishi uchun ruxsat bermaydi boshlab, MPI konstantalarni bashorat MPI_INTMPI_CHARMPI_DOUBLEmos uchun intchardouble, va hokazo

S qatorlarini intbarcha jarayonlardan bittasiga o'tkazadigan misol C. Qabul qiluvchi jarayon "ildiz" jarayoni deb ataladi va u har qanday belgilangan jarayon bo'lishi mumkin, lekin odatda bu jarayon 0 bo'ladi. Barcha jarayonlar o'z massivlarini ildizga yuborishni so'raydi MPI_Gather, bu har bir jarayonga (shu jumladan, root o'zi) chaqiradi MPI_Sendva ildiz MPI_Recvbarcha ushbu massivlarni kattaroq qismga yig'ish uchun buyurtma qilingan qo'ng'iroqlarning tegishli sonini qiladi : [15]

int send_array [ 100 ];

int root = 0 ; / * yoki har qanday narsa * /

int num_procs , * recv_array ;

MPI_Comm_size ( comm , & num_procs );

recv_array = malloc ( num_procs * sizeof ( send_array ));

MPI_Gather ( send_array , sizeof ( send_array ) / sizeof ( * send_array ), MPI_INT,

recv_array , sizeof ( send_array ) / sizeof ( * send_array ), MPI_INT ,

root , comm );

Biroq, buning o'rniga siz 100 ints dan farqli o'laroq ma'lumotlarni bitta blok sifatida yuborishni xohlashingiz mumkin . Buning uchun ma'lumotlar turini "tutashgan blok" ni belgilang:

MPI_Datatype yangi turi ;

MPI_Type_contiguous ( 100 , MPI_INT , & newtype );

MPI_Type_commit ( & yangi turi );

MPI_Gather ( massiv , 1 , newtype , ece_array , 1 , newtype , root , comm );

Ma'lumotlar sinfidan yoki ma'lumot strukturasidan MPI_Type_create_structo'tish uchun MPI_predefinedma'lumotlar turlaridan quyidagicha MPI olingan ma'lumotlar turini yaratadi :

int MPI_Type_create_struct ( int soni ,

int * blocklen ,

MPI_Aint * disp ,

MPI_Datatype * turi ,

MPI_Datatype * newtype )

qaerda:


  • countbloklar bir qator bo'lib, tillo (elementlarda) uzunligini belgilaydi blocklendispva type.

  • blocklen har bir blokdagi elementlarning sonini o'z ichiga oladi,

  • disp har bir blokning bayt siljishlarini o'z ichiga oladi,

  • type har bir blokdagi element turlarini o'z ichiga oladi.

  • newtype (chiqish) ushbu funktsiya tomonidan yaratilgan yangi olingan turini o'z ichiga oladi

disp(Dislokatsiyalar) array uchun zarur bo'lgan ma'lumotlar strukturasi hamjihatlikni , kompilyator may pad beri bir sinf yoki ma'lumotlar tarkibida o'zgaruvchilar. Turli xil maydonlar orasidagi masofani topishning eng xavfsiz usuli bu ularning manzillarini xotirada olishdir. Bu MPI_Get_addressodatda C &operatori bilan bir xil bo'lgan, lekin bu xotirani segmentatsiya qilishda to'g'ri bo'lmasligi mumkin . [16]

Ma'lumotlar strukturasini bitta blok sifatida o'tkazish, bir vaqtning o'zida bitta elementni uzatishga qaraganda ancha tezroq, ayniqsa operatsiya takrorlanishi kerak bo'lsa. Buning sababi shundaki, belgilangan o'lchamdagi bloklar uzatish paytida ketma-ketlikni talab qilmaydi . [17]

Quyidagi ma'lumotlar tuzilmalari berilgan:


Download 64 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish