Umumiy mpi protseduralari. Mpi comm size, Mpi comm rank, mpi get processor name funksiyalari



Yüklə 426,96 Kb.
tarix29.11.2023
ölçüsü426,96 Kb.
#139133
3 MPIning umumiy protseduralari. Ma’lumotlar uzatish bilan bog’liq bo’lmagan umumiy MPI protseduralari. MPI INIT funksiyasi. MPI FINALIZE funksiyasi. MPI COME SIZE funksiyasi. MPI

Umumiy MPI protseduralari. MPI_Comm_size, MPI_Comm_rank, MPI_Get_processor_name funksiyalari.

Terminologiya

  • 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.
  • Jarayonlar guruhlarga birlashtiriladi, guruh ichida barcha jarayonlar qayta nomlanadi. Har bir guruhning u bilan bog'langan o'z kommunikatori mavjud.
  • Jarayon ikkita asosiy atributga ega: kommunikator va kommunikatordagi raqam.

KOMUNIKATOR VA RANK

  • Kommunikator (communicator ) - jamoaviy operatsiyalarni (axborot almashinuvi va boshqalar) amalga oshirish uchun mantiqiy maydonni tashkil etuvchi jarayonlar to'plami.Guruhlarning tarkibi ixtiyoriydir. Guruhlar mos kelishi, bir-biriga kirishi, kesishmasligi yoki qisman kesishishi mumkin. Jarayonlar faqat ma'lum bir kommunikator ichida o'zaro ta'sir qilishi mumkin, turli kommunikatorlardagi xabarlar kesishmaydi.

Har bir jarayon maxsus identifikatorga ega - daraja (rank) . Bitta kommunikator ichidagi har bir jarayon o'ziga xos darajaga ega.

Kommunikator aloqa muhitidir.

  • Kommunikator aloqa muhitidir.
  • Kommunikatorlar oldindan belgilangan -MPI_Comm turiga ega.
  • Dastur ishga tushganda, barcha jarayonlar MPI_COMM_WORLD kommunikatorida ishlaydi.
  • U har doim mavjud va MPI dasturining barcha ishlaydigan jarayonlarining o'zaro ta'siri uchun xizmat qiladi.
  • Dastur boshlanishida faqat bitta joriy jarayonni o'z ichiga olgan MPI_COMM_SELF kommunikatori va hech qanday jarayonlarni o'z ichiga olmaydigan MPI_COMM_NULL kommunikator mavjud.
  • Yo'naltirishda siz ushbu yo'naltirish amalga oshiriladigan guruh identifikatorini ko'rsatishingiz kerak. Barcha jarayonlar oldindan belgilangan MPI_COMM_WORLD identifikatoriga ega bo'lgan guruhda joylashgan.

Umumiy MPI protseduralari

  • Har bir parallel dasturda umumiy protseduralar zarur.
  • intMPI_Init( int* argc, char*** argv).
  • MPI_Init - parallel qismni ishga tushirish (har bir dastur uchun haqiqiy ishga tushirish bir martadan ko'p bo'lmaydi, agar takrorlansa, amallar bajarilmaydi va pastki dastur qaytadi).
  • Barcha MPI protseduralarini faqat MPI_Init ga murojat qilgandan keyin chaqirish mumkin.
  • Jarayon agar muvaffaqiyatli bo'lsa, –MPI_SUCCESS, aks holda – xato kodini qaytaradi.
  • intMPI_Finalize(void)
  • MPI_Finalize - ilovaning parallel qismini tugatilishi.
  • Jarayon MPI_Finalize ni chaqirganda, uning xabar almashishda ishtirok etishini talab qiladigan barcha amallar bajarilgan bo'lishi kerak.
  • MPI_Init kompleks argument turi barcha jarayonlarga asosiy argumentlarni uzatish uchun taqdim etilgan:

Umumiy MPI protseduralari

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

Jarayonlar sonini va rankini olishga misol

  • Ushbu dasturda har bir ishlaydigan jarayon MPI_COMM_WORLD kommunikatoridagi o'zining noyob raqamini va ushbu kommunikatordagi jarayonlar sonini chop etadi.

MPI_Get_processor_name

  • 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

Protsessor nomini olish

  • int main(int argc, char *argv[])
  • {
  • int len;
  • char*name;
  • name = (char*)malloc(MPI_MAX_PROCESSOR_NAME * sizeof(char));
  • // xotirada protsessor nomi uchun joy ajratish
  • MPI_Init(&argc, &argv);
  • MPI_Get_processor_name(name, &len);
  • cout<< " processor name " << name << "\t" <<" name length" <
  • MPI_Finalize();
  • return 0;
  • }

Topshiriq

  • Protsessor ismini, jarayonlar umumiy sonini va jarayonlar raqamini olish dasturini tuzing.
  • Dasturni n ta jarayon orqali ishga tushiring.
  • n - jurnaldagi tartib raqamingiz.

Yüklə 426,96 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə