Dasturlarni cmd orqali ishga tushirish usullari.
Mavzu: Dasturlarni cmd orqali ishga tushirish usullari. Cmd buyruqlari. MPI kutubxonasining yaratilish tarixi.MPI_status strukturasi. MPI umumiy protseduralari. MPI da xabar almashish turlari va ular orasidagi farqlar. Blokirovkali xabar almashishni real muammolarni yechishga qo llanilishi.ʻ MPI_Wtick funksiyasi. MPI_Probe funksiyasining muhim holatlarda qo llanilishi. ʻ Blokirovkasiz xabar almashish mohiyati va uning qo llanilish ʻ sohalari.Blokirovkasiz xabar almashish funksiyalari. Blokirovkasiz xabar almashish holatini tekshirish funksiyalari va ularni amalda qo llanilishi. ʻ Blokirovkali va blokirovkasiz xabar almashish o rtasidagi asosiy farqlar,afzallik va ʻ kamchiliklari. Jarayonlar o rtasida ikki tomonlama xabar almashish uchun ʻ ishlatiladigan funksiyalar. Jarayonlar o rtasida jamoaviy (kollektiv) xabar ʻ almashish. Dasturlarni cmd orqali ishlatish buyruqlatri. CMD (Command Prompt) yoki Terminal, Windows operatsion tizimida dasturlarni bajarish va boshqa operatsiyalarni amalga oshirish uchun ishlatiladigan birinchi vosita hisoblanadi. Quyidagi qatorlarda, CMD orqali dasturlarni ishga tushirishning ba'zi usullarini ko'rsataman: Dasturning to'liq yo'lini kiriting: CMD oynasini oching va dasturning to'liq yo'lini kiriting. Masalan: "C:\contes\cmd3.exe" Bu buyruq dasturni boshqa oynada ochmaydi, balki asosiy CMD oynasida ishga tushiradi. Buyruq qatorlarini yozish: CMD da bir nechta buyruqni biriktirib bajarish uchun buyruq qatorlari yozish mumkin. Buyruq qatorlarini ajratish uchun & belgisidan foydalaning. mpiexec -n 13 C:\contes\cmd3.exe mpiexec -n buyruqi MPI (Message Passing Interface) dasturining ishga tushirilishini belgilaydi. MPI, masshtablangan va kuchli parallel dasturlarni yaratish va bajarish uchun ishlatiladigan bir kommunikatsiya protokolining nomidir. MPI, paralel kompyuterlarda yoki klastarlarda parallel hisoblash uchun xizmat qiladi. mpiexec MPI dasturini ishga tushirish uchun buyruqdir. -n flagi esa MPI dasturida ishlatilgan "process" (jarayon)lar sonini belgilaydi. Bu, parallel dastur bajarish uchun kerak bo'lgan jarayonlar sonini ifodalaydi. Jarayonlar MPI kommunikatsiya orqali ma'lumot almashish uchun ishlatiladi.
Masalan, agar mpiexec -n 5 cmd3.exe buyruqi berilsa, bu cmd3.exe dasturini 5 ta parallel jarayon (process) bilan ishga tushiradi. Har bir jarayon o'zining o'zgartirilgan ma'lumotlar to'plamini qabul qiladi va ulardan foydalanish uchun bir- biriga aloqador MPI kutiladi. -n flagi orqali belgilangan jarayonlar soni, ishlab chiqarilayotgan vazifalarning tashkil etilishi, resurslarni birlashtirish va natijalarni to'plamla olishning usuli bilan bog'liq bo'ladi. Bu buyruq MPI dasturlarini parallel ishga tushirishda keng qo'llaniladi. cmd umumiy buyruqlari haqida ma’lumotlar CMD (Command Prompt) Windows operatsion tizimida dasturlarni bajarish va sistem bilan ishlash uchun ishlatiladigan birlamchi vositadir. Quyidagi qatorlarda CMD buyruqlari haqida to'liq ma'lumotlarni ko'rsataman: Cmd ga kirish uchun <pusk>+R Oyna ichiga cmd yoziladi va OK tugmasi bosiladi va kiriladi. dir : Joriy direktoriyadagi fayl va papkalarni ro'yxatini ko'rsatadi. cd : Joriy direktoriyani o'zgartiradi. cd C:\contes\cmd3.exe mkdir : Yangi papka yaratadi. del : Faylni o'chiradi copy : Faylni ko'chiradi yoki ko'chirib yuboradi. copy SourceFile.txt DestinationFolder\ move: Faylni ko'chiradi yoki o'chiradi.
move SourceFile.txt DestinationFolder\ ren: Fayl nomini o'zgartiradi. MPI kutubxonasining yaratilish ta’rixi. MPI (Message passing interface-xabar uzatish interfeysi) turli xil tabiatdagi parallel hisoblash tizimlarida ishlaydigan ilovalarni yaratish va ishga tushirish imkonini beruvchi yordamchi dasturlar va kutubxona funksiyalari to'plamidir (C/C++, FORTRAN tillari uchun). MPI 1990-yillarda taqsimlangan xotira tizimlari uchun yagona dasturlash yondashuvi sifatida taqdim etilgan. MPI mashhurlik darajasiga ko'tarildi va hozir umumiy xotira tizimlarida va turli xil aralash hisoblash muhitlarida keng qo'llaniladi. MPI jarayonlar o’rtasida xabar almashish maqsadida qo’llaniladi. Message Passing Interface (MPI) - bir xil vazifani bajaradigan jarayonlar o'rtasida xabar almashish imkonini beruvchi ma'lumotlarni uzatish uchun dasturlash interfeysi (API). Uilyam Groupe, Evin Lusk va boshqalar tomonidan ishlab chiqilgan. MPI parallel dasturlashda eng keng tarqalgan ma'lumotlar almashinuvi interfeysi standarti bo'lib, ko'p sonli kompyuter platformalari uchun ilovalar mavjud. U klasterlar va superkompyuterlar uchun dasturlarni ishlab chiqishda foydalaniladi. MPI-da jarayonlar o'rtasidagi asosiy aloqa vositasi xabarlarni bir-biriga uzatishdir. Hozirgi vaqtda MPI ning ko'plab bepul va tijorat dasturlari mavjud. MPI birinchi navbatda taqsimlangan xotira tizimlariga, ya'ni ma'lumotlarni uzatish xarajatlari yuqori bo'lganda, OpenMP esa umumiy xotiraga ega tizimlarga (umumiy keshga ega ko'p yadroli) qaratilgan. Klasterdagi ko'p yadroli tizimlardan optimal foydalanish uchun ikkala texnologiya birgalikda ishlatilishi mumkin. MPI kutubxonasiga tegishli barcha funksiyalarning nomlari, ma'lumotlar turlari, konstantalar va hokazolar MPI_ prefiksi bilan boshlanadi va mpi.h sarlavha faylida tasvirlanadi. Barcha funksiyalar ( MPI_Wtime va MPI_Wtick bundan mustasno) int qaytish turiga ega va muvaffaqiyatga erishilganda xato kodi yoki MPI_SUCCESS qaytaradi. Biroq, xato bo'lsa, uni chaqirgan funksiyadan qaytishdan oldin, dasturni g'ayritabiiy tarzda tugatadigan standart xato ishlov beruvchisi chaqiriladi. Shuning uchun, qaytish qiymatini tekshirish mantiqiy emas. Standart xato ishlov beruvchini almashtirish mumkin ( MPI_Errandler_set funksiyasidan foydalangan holda), lekin MPI standarti dastur xatolikdan keyin ishlashni davom ettirishiga kafolat bermaydi. Demak, bu ham odatda mantiqiy emas. MPI_status strukturasi
MPI_status struktura MPI kutubxonasida foydalaniladigan ma'lumotlar to'plamini saqlash uchun ishlatiladi. Ushbu struktura ma'lumot almashish operatsiyalari natijasida olinadigan ma'lumotlarni saqlab turadi. • 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. • Bir tomondan, biz MPI_Recv ga xabar kutilayotgan vazifaning raqamini va uning identifikatorini ko’rsatamiz; va boshqa tomondan, biz ularni status strukturasida MPI dan olamizmi? Buning sababi, MPI_Recv joker argumentlar bilan chaqirilishi mumkin ("har qanday narsani/har kimdan qabul qilish") va bunday ma'lumotlarni qabul qilishdan so'ng, dastur status tuzilmasidan MPI_SOURCE va MPI_TAG maydonlarini o'qish orqali haqiqiy raqam/identifikatorni o'rganadi. • MPI_ERROR maydoni odatda tekshirilishi shart emas - MPI tomonidan o'rnatilgan standart xato ishlov beruvchisi muvaffaqiyatsizlikka uchragan taqdirda MPI_Recv dan qaytishdan oldin dasturning bajarilishini to'xtatadi. Shunday qilib, MPI_Recv dan qaytgandan so'ng, status.MPI_ERROR maydoni faqat 0 ga teng bo'lishi mumkin (MPI_SUCCESS); MPI_Status turida kiruvchi xabarning haqiqiy uzunligini yozib oladigan maydon mavjud emas. Uzunlikni shunday topish mumkin MPI_status strukturasining ma'lumotlarni saqlab turish uchun kerakli maydonlar quyidagilardir: MPI_SOURCE : Bu maydon ma'lumotni yuborgan protsessning identifikatori (rank) ni saqlaydi. MPI_TAG : Ushbu maydon almashish operatsiyasi orqali olinayotgan ma'lumotlarni turi (tag) ni saqlaydi. MPI_ERROR : Ushbu maydon almashish operatsiyasi natijasida yuzaga kelgan xatolarni saqlaydi. MPI_status strukturasining foydalanishida MPI kutubxonasi tomonidan o'rnatilgan almashish operatsiyasi tugagandan so'ng, MPI_Status tipidagi obyekt
yaratiladi va ushbu obyektning ma'lumotlari MPI_recv() yoki MPI_Wait() kabi funktsiyalarga o'tkaziladi. MPI_Status obyekti dastur tomonidan o'zida saqlangan ma'lumotlarni o'qish, aniqlash va saqlash uchun foydalaniladi. MPI kutubxonasida MPI_Status strukturasining ma'lumotlari to'g'ridan- to'g'ri o'zgartirib bo'lmaydi. Ular faqat MPI_recv(), MPI_Wait() va hokazo funktsiyalari ishlatilganda yangilanadi. Boshqacha bir ifoda bilan aytganda, MPI_Status strukturasining ma'lumotlari, MPI kutubxonasi tomonidan so'rovga javob sifatida olinadigan ma'lumotlarni saqlab turadigan o'zgartirilmaydigan obyekt hisoblanadi. MPI_status strukturasining foydalanilishi dastur tomonidan almashish operatsiyalari natijasida yuborilgan ma'lumotlarni aniqlash, qarshilik qilish va boshqa qo'llanmalarni amalga oshirishda juda kerakli bo'ladi. MPI protseduralari MPI (Mavzu Prognozlashdirish Intizomi, inglizcha "Message Passing Interface") umumiy protseduralar, parallel kompyuterlarda dasturlashni osonlashtirish va ma'lumotlarni almashish uchun ishlatiladigan protseduralar to'plamidir. Bu protseduralar MPI kutubxonasi orqali yoki MPI standartiga muvofiq boshqa kutubxonalardan foydalanilarak ishga tushiriladi. Quyidagi eng umumiy MPI protseduralari mavjud: MPI_Init : MPI kutubxonasini ishlatish uchun muhim tayyorgarliklarni amalga oshirish uchun ishlatiladi. Dastur boshida yoki paralel ishga tushishdan oldin chaqirish kerak. MPI_Finalize : MPI protsesslarining ishini yakunlash uchun ishlatiladi. Dastur tugagandan so'ng chaqirish kerak. MPI_Comm_size : Kommunikatsiya to'plamidagi (MPI_COMM_WORLD) protsesslar sonini olish uchun ishlatiladi. MPI_Comm_rank : Kommunikatsiya to'plamidagi (MPI_COMM_WORLD) joriy protsessning identifikatorini olish uchun ishlatiladi. MPI_Send: Ma'lumotlarni bir protsessdan boshqa protsessga yuborish uchun ishlatiladi. MPI_Recv : Ma'lumotlarni bir protsessdan qabul qilish uchun ishlatiladi. • Har bir parallel dasturda umumiy protseduralar zarur. • intMPI_Init( int* argc, char*** argv).