struct A {
int f ;
qisqa p ;
};
struct B {
struct A a ;
int pp , vp ;
};
MPI asosidagi ma'lumotlar turini yaratish uchun C kodi:
static const int blocklen [] = { 1 , 1 , 1 , 1 };
statik const MPI_Aint disp [] = {
ofsetof ( struct B , a ) + offsetof ( struct A , f ),
offsetof ( struct B , a ) + offsetof ( struct A , p ),
ofsetof (struct B , pp ),
ofsetof ( struct B , vp )
};
statik MPI_Datatype turi [] = { MPI_INT , MPI_SHORT , MPI_INT , MPI_INT };
MPI_Datatype yangi turi ;
MPI_Type_create_struct ( sizeof ( type ) / sizeof ( * type ), blocklen , disp , type , & newtype );
MPI_Type_commit ( & yangi turi );
2.3 MPI-2 kommunikatsiya operatsiyalari
MPI-2 belgilaydi uch biryoqlama kommunikatsiya operatsiyalari, MPI_Put, MPI_Get, va MPI_Accumulate, uzoq xotira, uzoq xotiradan o'qish, va mos ravishda vazifalarni bir qator bo'ylab bir xil xotira ustida kamaytirish operatsiya uchun yoz bo'lish. Ushbu aloqani sinxronlashtirishning uch xil usuli (global, juftlik va masofadan qulflar) ham aniqlangan, chunki spetsifikatsiya ushbu operatsiyalar sinxronizatsiya nuqtasiga qadar amalga oshirilganligiga kafolat bermaydi.
Ushbu turdagi qo'ng'iroqlar ko'pincha sinxronizatsiya noqulay bo'lgan algoritmlar uchun foydali bo'lishi mumkin (masalan, taqsimlangan matritsani ko'paytirish ) yoki boshqa protsessorlar ma'lumotlar ustida ishlayotganda vazifalar o'zlarining yuklarini muvozanatlashi mumkin bo'lgan hollarda.
MPI 1.x standarti boshlang'ich amalga oshirish edi MPICH dan, Argonne Milliy laboratoriya (anl) va Missisipi shtati universiteti . IBM shuningdek, dastlabki dasturchi bo'lgan va 90-yillarning boshlarida superkompyuter kompaniyalari MPICH-ni tijoratlashtirgan yoki o'zlarining dasturlarini qurgan. Lam / MPI dan Ogayo kompyuter markazi yana erta ochiq amalga oshirish edi. ANL MPICHni ishlab chiqarishni o'n yildan ko'proq vaqt davomida davom ettirdi va endi MPIH-3.1 standartini tatbiq etgan holda MPICH-3.2 ni taklif qilmoqda.
Open MPI ( OpenMP bilan adashtirmaslik kerak ) FT-MPI, LA-MPI, LAM / MPI va PACX-MPI birlashishi natijasida hosil bo'lgan va ko'plab TOP-500 superkompyuterlarida uchraydi .
Boshqa ko'plab harakatlar MPICH, LAM va boshqa ishlarning hosilalari, shu jumladan HP , Intel , Microsoft va NEC kompaniyalarining tijorat dasturlari .
Texnik shartlar C va Fortran interfeyslarini talab qiladigan bo'lsa-da, MPI-ni amalga oshirish uchun ishlatiladigan til, uning ishlash vaqtida qo'llab-quvvatlanadigan tilga yoki tillarga mos kelishi bilan cheklanmaydi. Ko'pgina dasturlar C, C ++ va assotsiatsiya tillarini birlashtiradi va C, C ++ va Fortran dasturchilariga mo'ljallangan. Bog'lanish boshqa ko'plab tillarda, jumladan Perl, Python, R, Ruby, Java va CL uchun mavjud (qarang # Til birikmalari ).
MPI apparati tadqiqotlari MPI-ni to'g'ridan-to'g'ri qo'shimcha qurilmalarda, masalan, protsessor xotirasida , har bir tugundagi RAM chiplari mikrosxemasiga MPI operatsiyalarini o'rnatishga qaratilgan . Xulosa qilib aytganda, ushbu yondashuv tildan, operatsion tizimdan yoki protsessordan mustaqil, ammo uni tezda yangilab yoki o'chirib bo'lmaydi.
Yana bir yondashuv operatsiyaning bir yoki bir nechta qismiga apparat tezlashtirishni qo'shish, shu jumladan MPI navbatlarini apparatli qayta ishlash va RDMA yordamida to'g'ridan-to'g'ri xotira va tarmoq interfeysi o'rtasida CPU yoki OS yadrosi aralashuvisiz ma'lumotlarni uzatish uchun foydalanish .
Do'stlaringiz bilan baham: |