Ma`lumotlarni almashish va qayta ishlash usullari

|
Ma`lumotlarni almashish va qayta ishlash usullari
|
bet | 2/5 | Sana | 23.05.2024 | Hajmi | 28,02 Kb. | | #251542 |
Bog'liq Маълумотларни параллел қайта ишлаш-fayllar.orgMa`lumotlarni almashish va qayta ishlash usullari.
Massivli-parallel kompyuterlar paydo bo`lishi bilan parallel jarayonlarni aloqasini qo`lab-quvvatlovchi kutubxona interfeyslar keng tarqaldi. Bu yo`nalishning toifali vakiliga Message Passing Interface (MPI) interfeysi misol bo`ladi. Bu interfeys amalda vektor-konveyyerli super - EXM dan tortib shaxsiy kompyutergacha bo`lgan barcha parallel platformalarda mavjud. Dasturning qaysi parallel jarayonlari dasturning qaysi qismida va jarayonlar bilan ma`lumotlar almashishi yoki o`z ishini sinxronlab borishi kerakligini dasturchining o`zi belgilaydi. Odatda parallel jarayonlarning manzil soxasi turlicha bo`ladi. Xususan, bu g`oyaga MPI va PVI da amal qilinadi. Boshqa texnologiyalarda, masalan Shmem da lokal (private) va umumiy (shared) o`zgaruvchilari qo`llaniladi. Bu o`zgaruvchilarga dasturning barcha jarayonlari murojat etishi mumkin va Put/Get toifasidagi operatsiyalar yordamida umumiy xotira bilan ishlash usuli tashkil etiladi. Linda sistemasi o`ziga xos xususiyatga ega bo`lib, unda ixtiyoriy ketma-ketlikda tilga to`rtta: in, out, read va eval funksiyalarini qo`shadi va parallel dasturlar tuzish imkonini beradi. Afsuski, ushbu keltirilgan g`oya oddiy bo`lishiga qaramasdan, uni amalda qo`llash muammolar tug`diradi.
Xabarlarni almashish interfeys texnologiyasi
Taqsimlangan xotira parallel kompyuterlardagi keng tarqalgan dasturlash texnologiyasi MPI texnologiyasi xisoblanadi. Bunday sistemalardagi parallel jarayonlarning o`zaro muloqat usuli bir-biri bilan xabarlar almashishdan iborat. Bu usul texnologiyasi nomi - Message Passing Interface (xabarlar almashish interfeysi) deb aks ettirilgan. MPI standartida sistema amal qilishi va dastur yaratishda foydalanuvchilar amal qilishi kerak bo`lgan qoidalar mavjud. MPI Fortran va Si bilan ishlashni qo`llab-quvvatlaydi. Interfeysning to`liq versiyasida 125 tadan ko`proq protsedura va funksiyalar mavjud. MPI MIMD(Multiple Instruction Multiple Data) stilidagi parallel dasturlarni qo`llab quvvatlaydi. Unda turli matnlar bilan berilgan jarayonlar birlashtiriladi. Biroq bunday dasturlarni tuzish va otladka etish murakkab. Shuning uchun amalda dasturchilar SPMD (SINGLE PROGRAM MULTIPLE DATA) parallel dasturlash modelidan foydalanishadi. Unda parallel jarayonlar uchun bitta dastur kodi qo`llaniladi. Xozirgi paytda MPI ko`proq to`rlar bilan ishlashni qo`llab-quvvatlaydi. MPI kutubxonasining parallel jarayonlar bilan mo`ljallangan funksiyalarini qo`llab-quvvatlash uchun dasturni kompilyatsiya etishda zarur kutubxona modullarini ulash zarur. Buni buyruq sifatida ulash yoki ko`pgina sistemalarda maxsus mpicc (Si tilidagi dasturlar uchun), mpicc (Si++ tilidagi dasturlar uchun) va mpif77/mpif90 (Fortran77/90 tilidagi dasturlar uchun) buyruq va funksiyalar mavjud. Kompilyatorning “-o name” bo`limi yaratiladigan ishchi fayl a.out deb nomlanadi, Masalan: mpiff77-o program program.f
Ishchi fayl yaratilgandan keyin uni zarur miqdordagi jarayonlar uchun ishga tushirish kerak. Buning uchun odatda MPI-dasturlarini ishga tushiruvchi mpirun buyrug`i mavjud, Masalan: mpirun – np N< dastur va argumentlari>
Bu yerda N – bitta masaladagi jarayonlar miqdori. Ishga tushirilgandan keyin bitta dastur ishga tushirilgan jarayonlar tomonidan chaqiriladi. Chaqirish natijasi sistemaga bog`liq ravishda terminalga yoki nomi ko`rsatilgan faylga yoziladi. Qolgan barcha obyektlar: protseduralar, konstantalar va MPI da aniqlangan ma`lumotlar toifalari MPI old qo`shimchaga ega bo`ladi. Agar foydalanuvchi dasturda bunday qo`shimchali nomlardan foydalanmasa xam MPI obyektlar bilan muammo tug`ilmaydi. Bundan tashqari Si tilida funksiya nomlaridan bosh va kichik xarflar farqlanadi. Odatda MPI funksiya nomidagi MPI qo`shimchasidan keyingi xarf bosh xarf bilan, keyingilari kichik xarflar bilan yoziladi. MPI konstantalar nomi esa butunligicha bosh xarflar bilan yoziladi. MPI interfeysining tavsifi mpif.h (mpi.h) faylida mujassamlashtirgan. Shuning uchun MPI – dastur boshqa include `mpif.h` direktivasi (ko`rsatmasi) (Si tilida dasturda #include `mpi.h`) joylashishi kerak. MPI dastur – bu o`zaro muloqat qiluvchi parallel dasturlar to`plamidir. Har bir jarayon bir marta yuz beradi va dasturni parallel qismini tashkil etadi. MPI dastur bajarilishi jarayonida qo`shimcha jarayonlarni tashkil etish yoki mavjudlarini yo`qotish mumkin emas. Har jarayon o`zining manzil soxasida joylashadi va umumiy o`zgaruvchilar MPI da yo`q. Jarayonlar o`rtasida muloqatning yagona usuli xabarlar almashishdir. Parallel jarayonlarni muloqatini mustaqil amalga oshirish uchun jarayonlar guruxi tanlab olinib ular uchun aloxida muxit kommunikatorlar yaratiladi. Jarayonlar faqat bitta kommunikatorlar ichida muloqat qilinadi va turli kommunikatorlarga yuborilgan xabarlar kesishmaydi. Fotran tilidagi kommunikatorlar INTEGER toifasiga ega bo`ladi. Dastur ishga tushishida yuzaga keladigan jarayonlar to`la qamrovli MPI_COMM_WORLD nomli kommunikator doirasida ishlaydi deb xisoblanadi. Ushbu kommunikator doimo mavjud bo`ladi va ishga tushgan barcha MPI dasturlarni muloqat qilish uchun xizmat qiladi. Bundan tashqari dastur ishga tushishida bitta jarayonga ega bo`lgan MPI_COMM_SELF kommunikatori, xamda bitta xam jarayonga ega bo`lmagan MPI_COMM_NULL kommunikatori mavjud bo`ladi. Jarayonlar o`rtasida muloqatlar ma`lum kommuniqatorlar doirasida amalga oshadi. Turli kommunikatorlarga berilgan xabarlar kesishmaydi. MPI dasturidagi xar bir jarayon o`zi tegishli bo`lgan gurux ichida takrorlanmas atributga – musbat butun sondan iborat jarayon nomeriga ega bo`ladi. Ushbu atribut yordamida jarayonlar o`rtasidagi asosiy muloqatlar olib boriladi. Bitta kommunikatordagi jarayonlar xar xil nomerga ega bo`ladi, biroq jarayon bir vaqtda bir necha kommuniqatorga tegishli bo`lishi mumkin. Bu xolda jarayonning bitta kommunikator ichida nomeri ikkinchi kommunikator ichidagi nomeridan farq qilishi mumkin. Bunday jarayonning ikkita asosiy atributi tushinarli bo`ladi: kommunikator va kommunikatorda nomer. Agar guruxda n ta jarayon bo`lsa, u xolda joriy guruxdagi ixtiyoriy jarayon nomeri 0 dan n – 1 gacha oraliqda yotadi. Jarayonlarni o`zaro muloqat qilishining asosiy usuli xabarlar almashishdan iborat. Xabar–bu biror toifadagi ma`lumotlar to`plamidir. Xar bir xabar bir qancha atributlarga ega bo`ladi. Masalan, jo`natuvchi jarayon nomeri, qabul qiluvchi jarayon nomeri, xabar identifikatori va boshqalar. Xabarning asosiy atributlaridan biri uning identifikatori yoki tegi xisoblanadi. Xabarni qabul qilayotgan jarayon xabar identifikatori bo`yicha unga bitta jarayondan kelgan ikkita xabarni farqlab oladi. Xabar identifikatori musbat butun son bo`lib 0 va MPI_TAG_UP diopazonda yotadi va MPI_TAG_UP 32767 dan kichik emas. Xabar atributlari bilan ishlash uchun massiv (Si tilida struktura) kiritilgan. Massiv elementlari yordamida xabar qiymatlariga murojat etiladi. MPI protseduralarini ko`pchiligida oxirgi argumentda muvaffaqiyatli tugaganlik xaqidagi ma`lumot qaytariladi. Muvaffaqiyatli bajarilganda MPI_SUCCES qiymati, aks xolda xatolik kodi qaytariladi. Protsedura bajarilishida yuz bergan xatolikni uning tavsifidan bilib olishi mumkin. Turli xatolik kodlariga mos tavsiflar mpif.h faylida joylashadi.
|
| |