Umumiy xotirali tizimlar. Umumiy xotirali kompyuterlar turiga SMP arxitekturali NUMA tizimli va multiprotsessorli vektorli-konveyerli kompyuterlar kiradi. Bu kompyuterlar uchun «yagona» so’zi xarakterli, ya’ni yagona operativ xotira, yagona operatsion tizim, yagona kiritish - chiqarish tizim umumiydir. Faqat protsessorlar ko’pchilikni tashkil qiladi. Yagona UNIX- shunga o’xshash operatsion tizim bo’lib, butun kompyuter ishini boshqaradi, ko’p jarayonlar ko’rinishida faoliyat yuritadi. Har bir qo’llaniladigan dastur alohida jarayon kabi ishga kiritiladi. Operatsion tizimning o’zi qandaydir protsessorlar bo’yicha jarayonlarni bo’lib beradi. Bir qarashda, dasturni parallel bo’lmaslik jarayonlarini qo’llash mumkin. Ammo bu mexanizm unchalik qulay emas edi, chunki har bir jarayon o’zining adress hududida faoliyat ko’rsatardi va bu tizimlarning umumiy tomoni – umumiy xotira bo’lib, oddiy va tabiiy qo’llash imkoniyati yo’q edi.
Dasturlarning parallel bo’lmasligi uchun IPlarni paydo qilish mexanizmi qo’llaniladi (threads) - yengil og’irlik jarayonlari bo’lib, ularga alohida manzil hududi yaratilmaydi, ammo ko’p protsessorli tizimlarda ular protsessorlar bo’yicha tarqaladi. Dasturlar C tilida uni to’g’ridan - to’g’ri dasturlarni parallel bo’lmasligi uchun mazkur mexanizm tegishli tarmoq funksiyalarini chaqirish orqali qo’llaniladi, FORTRAN tilida kompillyatorlarda bu mexanizm avtomatik tarzda parallel bo’lmaslik uchun qo’llaniladi, yoki kompillyatorlarga parallel bo’lmaslik uchun direktivalarda qo’llaniladi (bunday yondoshishni C tilidagi kompillyatorlar ham quvvatlaydi).
Barcha simmetrik multiprotsessor tarmoqlarini ishlab chiqaruvchilar u yoki bu tarzda POSIX Pthread standartiga amal qiladilar va dastur bilan ta’minlash tarkibiga dasturlarning parallel bo’lmaslik kompillyatorlarini qo’shadilar yoki dast urlarni parallel bo’lmasligi uchun direktivalar to’plamini taklif qiladilar. Xususan, ko’pgina SMP arxitekturali (Sun, HP, SGI) kompyuter ishlab chiqaruvchilar o’z kompillyatorlariga parallel bo’lmaslik sikllarining maxsus direktivalarini taklif qiladilar. Ammo bu direktivalar to’plami, birinchidan, chegaralangan, ikkinchidan, o’zaro mutanosib emas. Natijada ishlab chiqaruvchilar har bir platforma uchun alohida amaliy dasturlarni parallel bo’lmasligini hal qilishlariga to’gri keladi.
Oxirgi yillarda dasturlashning OpenMP turi keng tarqalmoqda va bu direktivalar to’plamining kengayishi va umumlashtirilishi natijasidir. OpenMP ko’rinishi umumiy xotira modelida dasturlash uchun standart sifatida ishlab chiqilgan. OpenMPga kompillyatorga, jarayonlar va muhit o’zgaruvchilari direktivalar to’plami spesifikatsiyasi kiradi. Aslini olganda, u "inkremental parallelni oldini olish", HPF (High Performance Fortran – Fortran tilidan olingan yuqori hisoblash imkoniyatiga ega bo’lgan) tadbiq etadi. Ishlab chiqaruvchi yangi parallel dasturni yaratmaydi, balki ketma - ket Open MP direktivalarini qo’shadi. Bunda Open MP dasturlash tarmog’i ishlab chiqaruvchiga parallel ilovalarni nazorat qilish uchun katta imkoniyatlarni yaratadi. Butun dastur ketma - ket va parallel hududlarga bo’linadi. Barcha ketma - ket hududlarni bosh ip amalga oshiradi dasturni ishga solgan vaqtda, parallel hududga kirishda esa bosh IP qo’shimcha IPlarni vujudga keltiradi. Open MP - dastur hech qanday modifikatsiya qilmasdan ham bir protsessorli, ham ko’p protsessorli tarmoqlarda ishlashi ko’zda tutiladi. Open MP - direktivalari oxirgi holatda umuman inkor etiladi. Shuni ta’kidlash zarurki umumiy xotira mavjudligi tarqatilgan xotira tarmoqlari uchun ishlab chiqilgan dasturlash texnologiyalarini qo’llashga mone’lik qilmaydi. Ko’pgina SMP tarmoqlarini ishlab chiquvchilar, shuningdek, dasturlashning boshqa MPI va PVM texnologiyalarini xam taklif qiladilar. Bu holatda kommunikatsion muhit sifatida bo’linuvchi tarqatuvchi xotira qabul qilinadi.
Taqsimlangan xotira tizimlari. Bu turdagi tarmoqlarda har bir hisoblash tugunida operatsion tizimning xususiy nusxalari faoliyat yuritadi va ular boshchiligida mustaqil dasturlar bajariladi. Bu haqiqiy mustaqil dasturlari ham yoki biron bir dasturning parallel shoxlari ham bo’lishi mumkin. Bu holatda ularning o’zaro harakat qilishning yagona mexanizmi ma’lumotlarni uzatish bo’lishi mumkin.
Maksimal ishlab chiqarishga erishishga intilish ishlab chiqaruvchilarni ma’lumotlarni uzatish mexanizmini yaratishda ko’p protsessorli tarmoqlarning arxitekturasi xususiyatlarini hisobga olishni taqozo etmoqda. Bu ancha samarali, ammo ma’lum kompyuter dasturini yozishga ko’maklashadi. Shu bilan birga dastur bilan ta’minlash mustaqil ishlab chiqaruvchilar tomonidan ma’lum platformaga bog’liq bo’lmagan ma’lumotlarni uzatish mexanizmini ishga tushirish taklif etilmoqda. Bularning eng ma’lum bo’lgani Oak Ridge National Laboratory tomonidan ishlab chiqilgan, EXPRESS kompaniyasi bo’lib, Parasoft va kommunikatsion kutubxona PVM (Parallel Virtual Machine) bo’ladi. 1994-yilda ma’lumotlarni uzatish MPI (Message Passing Interface) standart mexanizmi qabul qilindi. Bu 1992-yildan 1994-yilgacha Message Passing Interface Forum guruhi tomonidan tayyorlandi, unga Amerika va Yevropaning 40dan ortiq tashkilot vakillari kirgan. MPI ishlab chiqaruvchilari o’zlariga qo’ygan asosiy maqsad bo’yicha – bu MPI ni qo’llab yozilgan ilovalarni ko’p protsessorli tarmoqlarning arxitekturasidan qat’iy nazar ishlab chiqarishni yo’qotmasdan to’la mustaqilligini ta’minlashdir. Bu avtorlarning fikriga ko’ra dastur bilan va standart kutubxona dasturosti amaliy ta’minlashni ishlab chiqarishning tarqatuv xotiralari ko’p protsessorli tizimlarini ishlab chiqarishning kuchli rag’batlantiruvchisi bo’lishi kerak. Bu maqsadga erishilganligining tasdig’idir. Hozirgi vaqtda mazkur standart qariyb barcha ko’p protsessorli tarmoqlarini ishlab chiqaruvchilari tomonidan qo’llab quvvatlanadi. MPIlarni muvaffaqiyatli tadbiq etilishi, faqat klassik MPP tizimlarida emas, balki SMP tarmoqlarida ham va ishchi stansiyalarning turida muvaffaqiyat bilan ishlaydi (shu hisobdan bir xil bo’lmagan (неоднородных). MPI – bu ma’lumotlarni uzatish mexanizmi yordamida o’zaro parallel jarayonlarni harakat qilishni ta’minlash mexanizmi bo’yicha funksiyalar kutubxonasidir. C va FORTRAN tillari uchun interfeyslar qo’llab - quvvatlanadi.
Oxirgi vaqtlarda, C++ tillari uchun qo’llash qo’shilgan. Kutubxona o’z ichiga ko’plab ma’lumotlarni nuqta-nuqta tarzida uzatish funksiyalarini kollektiv operatsiyalarni bajarish va parallel ilova jarayonlarini boshqarish rivojlangan funksiyalar majmuasini o’z ichiga oladi. MPIning asosiy farqi bundan oldingilaridan jarayonlar oxiri ko’pchiligi bilan operatsiya qilish guruhi tushunchasi kiritilishi, shuningdek, bu sohalarini tavsiflovchi aloqa va kommunikatorlar bilan ishlash imkonini beruvchilarni kiritilishi bilan farqlanadi. Bu dasturlovchida samarali parallel dasturlar yozish imkonini beradi. Hozirgi vaqtda MPI tarqatilgan xotirali ko’p protsessorli tarmoqlar 32 asosli dasturlash texnologiyasi bo’lib hisoblanadi. MPI mufassal 2 qismda yetarlicha tavsiflanadi.
Ma’lumotlarni uzatish mexanizmini qo’llab dasturlash texnologiyasidagi rivojlanish erishish juda ko’p mehnat talab qiladi. Alternativ yondoshish ma’lumotlarga parallel ishlov berish paradigmasi orqali yuqori pog’onali HPF tili orqali amalga oshiriladi. Dasturlovchidan faqat ma’lumotlarni protsessorlar bo’yicha bo’lib berish talab etilib, kompilyator avtomatik tarzda funksiyalarini sinxronizatsiya qilib, ma’lumotlarni uzatadi (ma’lumotlarni noto’g’ri joylashtirish harajtlarni oshirishga olib keladi). Sikllarninrg paralelligini buzish uchun til maxsus konstruksiyasidan (operator FORALL) yoki kompillyatorga ($HPF INDEPENDENT) ko’rinishida psevdodirektivalar berish orqali amalga oshiriladi. HPF tili tarqatiladigan xotira tarmoqlarida instrumental parallellikni buzish va umumiy xotira modelini g’oyasini amalga oshirishga imkon beradi. Bu ikki holat dasturlar osonligini belgilaydi va mazkur texnologiya diqqatga sazovor ekanligini aniqlaydi. Bir dasturning o’zi, biron bir modifikatsiyasiz, bir protsessorli tarmoqlarda ham, ko’p protsessorli hisoblash tarmoqlarda ham samarali ishlashi kerak.
HPF tilidagi dasturlar ma’lumotlarni almashtirish funksiyasini to’g’ridan - to’g’ri chaqirishni qo’llaydigan funksional o’xshash dasturlardan ancha qisqa. Bizning fikrimizcha, bu tipdagi tillar aktiv tarzda rivojlanib ma’lumotlarni uzatish paketlarini keng qo’llanishdan siq’ib chiqaradi. Oxirgilarga hozirgi zamon dasturlashda assembler bajaradigan rol berilib, ularga faqat maksimal samaradorlikni talab etuvchi yuqori pog’onali tillarni ishlab chiqarishda va kutubxona uchun dasturlarni ishlab chiqarishda murojaat etiladi.
XX asrning 90-yillari o’rtasida HPF paydo bo’lishi bilan, katta ishonch bog’lanib, ammo ularni tadbiq etish qiyinchiliklari yetarlicha samarali bo’lgan kompillyatorlarni yaratishga imkon bermadi. HPF-dasturlar kompillyasiyasi ikki bosqichda bajariladigan loyihalar ancha qulay bo’ldi. Birinchi bosqichda HPF-dastur standart kommunikatsion dasturlarni qo’shimcha chaqirish Fortran-dasturiga aylantiriladi. Ikkinchi bosqichda esa uning kompillyatsiyasi standart kompillyatorlar bilan amalga oshiriladi. Bu yerda Nemis algoritmlar va ilmiy hisoblashlar instituti tomonidan ishlab chiqarilgan Adaptor kompillyatorlar tarmog’ini va RFA M.V.Keldish nomidagi amaliy matematika Institutida ishlab chiqarilgan parallel DVM dasturlarini alohida ta’kidlash zarur. DVM tarmog’i faqat Fortran tilini qo’llamasdan, balki Cni ham qo’llaydi. Bizning Adaptor tarmog’i bilan ishlash tajribamiz parallel HPF-dasturlar samaradorligi MPI - dasturlari samaradorligidan ko’p holda yuqori ekanligini ko’rsatdi. Ammo shunga qaramasdan ba’zi oddiy holatlarda adaptor tarmog’i oddiy dasturni bir necha qator qo’shib parallel holatdan chiqara oladi. Ma’lumotlarni uzatish mexanizmida alternativa bo’lmagan sohalarni ko’rsatish zarur – bu funksional parallelizmga xizmat ko’rsatishdir. Agar har bir tugun uning yonidagi protsessor bajarayotgan funksiyalarga qaramasdan o’z xususiy algoritmini bajarsa ular o’rtasida aloqa doimiy bo’lmaydi, ma’lumotlarni uzatish mexanizmidan tashqari boshqa hech narsani taklif qilish iloji yo’q. Mazkur bobda keltirilgan texnologiyalar, albatta barcha ro’yxatni qamrab olmaydi, balki eng universal va hozirgi vaqtda keng qo’llaniladiganlarini keltirdik.