Open MP ёки MPI ёрдамида бажаришга йўналтирилган дастурларни тайёрлаш учун қулай бўлган матн териш жараёнини бошқаришни типификациялаш воситалари ва усуллари таклиф этилади. Бошқарув турларини ва хотира билан ишлаш интизомини, тармоқда тақдим этиш ғояларини қулай қўллаб қуватлаш тизимини, дастурлаш тиллари ҳали олмаган.
Компонентларга йўналтирилган дастурий таъминот дастурлаш тили семантикаси ва дастурий таъминотни ишлаб чиқиш жараёнининг умумий тармоқ таърифига амал қилиши мумкин.
Параллел жараёнлардан фойдаланган ҳолда дастурларни тайёрлаш учун баъзи бир ёрдам Microsoft – нинг .NET технологияси томонидан таъминланади, бу эса турли хил дастурлаш тилларида дастурларда умумий тизим кутубхоналаридан фойдаланиш имконини беради.
Параллелизмни сотиш соҳасининг етакчи компаниялари бўлган Intel ва Microsoft юқори самарали ҳисоблашларни ишлаб чиқувчиларига дастурларни яратиш ва параллеллаштириш жараёнида ўзгартиришга қаратилган янги ечимларни таклиф қилади:
параллел дастурлаш бўйича ёрдамчи (Parallel Advisor XE);
компилятор-отладчиклари ва кутубхоналари (Parallel Composer XE2011);
оқимлар ва хотира анализатори (Parallel Inspector XE);
Параллел дастурлаш бўйича ёрдамчи дастурни компиляция қилишдан олдин Fortran ёки C тилида ёзилган дастурининг бошланғич матнини таҳлил қилади ва параллелликга тўсқинлик қилувчи тўсиқларни аниқлайди.
Оқимлар ва хотира анализатори компиляция натижасида тузилган объект кодини текширади ва дастурнинг ишлашини секинлаштирадиган нотўғри тақсимланган ресурсларни аниқлайди.
Унумдорликни таъминловчи дастурнинг хусусиятларини йиғувчи, дастурнинг эришилган натижаларини экспериментал синовини кузатиш имконини беради.
Ушбу воситалардан фойдаланиш технологияси, дастурчининг, дастурнинг бошланғич кодини ўзгартириш тўғрисида бир неча бор қарор қабул қилади ва керакли программаларни қўлда киритади, бу эса компиляторга трансформацияларни оптималлаштиришнинг мақбуллигини кўрсатиб беради, ўз навбатида бу дастурни параллеллаштиришдаги компиляторнинг ишини осонроқ ва ишончли бўлишига ёрдам беради. Дастурларни компилятор томонидан параллеллаштириш учун қулай бўлган шаклга келтириш ва маълум бир процессор конфигурацияси учун объект кодини ўрнатиш учун уларни ўзгартиришни автоматлаштириш муаммоси пайдо бўлади. Баъзи муаммолар манба ва объект кодини ўзгартириш кутубхоналари ёрдамида параллел дастурларни тайёрлаш схемаси билан ҳал қилинади.
Параллел дастурлаш учун янги қўллаб-қувватлашни намойиш қилганда, компилятор ишлаб чиқувчиларининг вакиллари ҳар бир бундай трансформацияни алоҳида дастур ҳолатида бажариш қанчалик осонлигини кўрсатиб беришади. Муаммо шундаки, керакли дастурда бундай позициялар ўнлаб ва юзлаб эмас, балки минглаб ва ўн минглаб бўлиши мумкин. Барчасини махсус воситаларсиз топиш муаммолидир. Бундан ташқари, бундай ишларни бажаришда маълумотлар тузилмаларини ва ҳисоблашни бошқариш схемаларини қайта ишлаб чиқиш, шунингдек дастурий таъминот конструкциясини амалга ошириш учун воситаларни оқилона танлаш зарурияти пайдо бўлади.
Масалан, глобал ўзгарувчилар билан ишлашнинг бир қатор механизмларини йўқ қилиш ёки ўзгартириш, умумий маълумотлар блоклари, процедураларни чуқур жойлаштириш, статик цикл бошқаруви билан рекурсив чақирувлардан такрорланишга ўтиш ва бошқалар зарур. Бундан ташқари, умумий хотира ва конкрет оқимнинг хотираси ўртасида танловни белгилаш ва аналитик ҳисоб-китоблар доирасида ҳақиқий номларнинг ҳажмини аниқлаш учун бутун спектри пайдо бўлади. Бундай ишни қўлда бажариш параллел дастурларга хос бўлган хатоларни келтириб чиқариш хавфини туғдиради, масалан, хотира пойгалари, кириш зиддиятлари, ўзаро блокировкалар ва ҳк.
Самарали параллеллаштириш эҳтиёжлари учун векторларни қайта ташкил этиш турли йўллар билан амалга оширилиши мумкин: жуфт ва тоқ элементларга бўлиниш, ярм бўлакларга ёки чорак бўлакларга бўлиш, ҳар хил ҳисоблаш интенсивлигини талаб қиладиган қисмларга тақсимлаш ва бошқалар.
Баъзан бундай муаммоларни дастур процессорлари томонидан амалга ошириладиган дастур матнини макро-ўзгартиришлар даражасида ҳал қилиш мумкин – фақат маълум бир дастур учун мос бўлган макро таърифлар тизимини ишлаб чиқиш керак. Бундай тизимлар одатда универсалликка эга эмас: улар дастурлашнинг индивидуал услубини акс эттиради, мнемониканинг ўзига хос хусусиятларини ва ҳисоблашни бошқариш схемаларининг мавхум чегараларини ҳисобга олади. Натижада, дастурнинг кўп қиррали версияси яратилади, у бошланғич дастурнинг эквиваленти бўла олмайди, балки унинг натижаларини эквивалент равишда тузади.
Муаммоларнинг махсус доираси кўп процессорли тизимларда кўп даражали хотиранинг ўзига хос хусусиятларини ҳисобга олиш қобилиятлари билан боғлиқ. Оддий кетма-кет дастурлаш, ишлатилаётган маълумотлар турлари тўғрисида статик маълумотларга эга бўлган ва керак бўлса дастурни оптималлаштириш ўзгартиришларини бажаришга қодир бўлган компиляторнинг қарорларига таяниб, бундай муаммоларни сезмаслиги мумкин.
Шуни таъкидлаш керакки, бошланғич дастурни тақдим қилиш тили сифатида параллел дастурлаш тилларидан фойдаланиш унинг муваффақиятли параллеллаштиришга мослашишини кафолатламайди.
Параллеллаштириш учун дастурнинг мувофиқлигини таҳлил қилишда қуйидаги потенциал хавф зоналари таҳлил қилинади:
глобал ўзгарувчиларни эълон қилиш ва улардан фойдаланиш;
ўзгарувчилар ва константаларнинг қамров доираси;
бошқа процедураларнинг ички мурожатларини ўз ичига олган параллеллаштирилган процедураларнинг таърифлари;
рекурсив таърифлар;
параллеллаштирилган цикл танасининг бажарилиш частотасини бошқарувчи циклларнинг сарлавҳалари;
оқимларнинг тармоқланишларини берувчи тармоқлар ва калитлар;
истисноларни қайти ишловчилари;
воқеалар ва хабарларга муносабат;
оқимлар ўртасида мумкин бўлган маълумотлар алмашинуви позициялари;
умумий хотирада ва файлларда маълумотларнинг такрорланиши;
умумий хотирадаги маълумотларга айлантирилиши мумкин бўлган функциялар параметрлари рўйхатлари;
циклни бошқариш декомпозицияси ва тегишли маълумотлар тузилмаларини қайта ташкил этиш;
ортиб борувчи ўзгарувчилар, ўзгариш динамикасини пост-таҳлил қилиш учун сақлаш мақсадга мувофиқ;
пост-таҳлил учун диагностик келишув позициялари;
аслида ишлатилмайдиган ўзгарувчилар ва константалар ёки ишлатилмайдиган ҳисоб-китоблар;
кўп оқимли дастур қисмларининг оқимлар сонига боғлиқлигини параметрлаш.
Бундай таҳлилдан келиб чиқадиган дастурларни лексик ва синтактик таҳлил қилиш усуллари, доимий иборалар ва макро-ўзгартиришлар ёрдамида символли маълумотларни қайта ишлаш услубида бажариш мумкин. Соф техник қийинчиликлар турли хил ўзгаришлар турлари билан боғлиқ. Амалиётчилар анъанавий отладка услубига риоя қилишади, яъни ўзгартириш жараёнини босқичларга бўлишади, уларнинг ҳар бирида айнан битта турдаги ўзгаришлар амалга оширилади, шундан сўнг дастур қисман функционал эквивалентлигини сақлаб қолиш учун мавжуд тест маълумотлари асосида ишлайди.
Шундай қилиб, дастурларни параллел шаклга ўтказиш техникаси дастурлаш тизимларини қўллаш услубини ўзгартиради, дастурни таҳлил қилиш ва код яратиш ўртасидаги чегара даражасида дастурлаш ишларини талаб қилади, шунингдек, дастурни ўзгартириш кутубхоналарини ва уни оптималлаштиришни ўзгартиришни тартибга солади.
Ўзгартиришларни оптималлаштиришга татбиқ этиш мезонлари ўзгаришини ҳисобга олиш муҳимдир. Агар кетма-кет дастурда ортиқча ҳисоб-китобларни йўқ қилиш одатда такомиллаштириш деб баҳоланса, параллел дастурда бу оқимлар орасидаги кераксиз ўзаро боғлиқликлар пайдо бўлиши ва умумий хотирага кириш туфайли пессимизм бўлиб чиқиши мумкин.
Шуни инобатга олиш керакки, дастурларнинг ҳаётий циклининг асосий меҳнат сиғими дастурларни синаш ва отладка билан боғлиқ бўлса-да, деярли ярим асрлик профессионал дастурлаш жараёнида айнан шу йўналишга эришилмаган. Агар параллел дастурлашда муваффақиятга эришиш йўлидаги биринчи тўсиқ изчил фикрлаш услуби билан боғлиқ бўлса, демак, иккинчиси, ҳалигача ҳал қилинмаган отладка учун сарифланадиган меҳнат ресурсларига боғлиқ.
Дастурлаш тизимларининг замонавий визуал интерфейслари учун отладка воситалари, параллел дастурларни отладка қилиш учун босқичма-босқич бажарилишини таъминлайдиган воситаларини тақдим этадилар. Ўзгарувчилар қийматларини кузатиб бориш ва пауза нуқталарини ўрнатиш, улар билан ишлаш учун дастурчи олдиндан дастурнинг барча бўлимлари учун тест тўпламларини тайёрлаши ва ички ўзгарувчилар қийматларининг тўғрилигини назорат қилиши керак. Отладчикни тўхтатиб турадиган ва дастурнинг такрорланишини таъминлайдиган шартларни белгилаш мумкин.
Параллел дастурлашнинг ўзига хос хусусияти фақатгина потокларни алмаштириш, тупикларни ва йўқолган сигналларни аниқлашни, биргаликда фойдаланиладиган маълумотларни, реентабеллик процедураларини тугатилишидан олдин бошқа потокдан қайта-қайта чақиришни акс эттиради.
Носозликларни тузатиш мақсадида дастурнинг махсус отладка версияси тузилади, бу отладка хизматисиз дастурни қўшимча отладка қилиш зарурлигини кўрсатади. Шу билан бирга, мустақил равишда қўшни ОС даражасидаги жараёндан отладка қилинган дастурни кузатишни таъминлайдиган фон отладка воситалари маълум.
Фақат сўнгги йиллардаги илмий ишларда, бузилишларга мойил бўлган маълумотларни қайта ишлаш назарияларининг пайдо бўлиши ва эталон дастури тушунчаси ва тақсимланган отладка схемасидан фойдаланган ҳолда дастурларни таққослаб тузатиш методологияси кўринишида берилган параллел дастурларни отладка муаммоларига жиддийроқ муносабат пайдо бўлди.
4. Дастурлаш тилларида параллеллик моделлари
Дастурлаш тиллари тарихида, дастурни кўрсатишнинг лаконик шаклларининг бир қатор мисоллари тўпланган. Буни Fortran дастурлаш тилидаги сукут бўйича, яширин цикллар ва киритиш-чиқариш кўрсатмалари мисолида кўриш мумкин. Aмалга ошириш прагматикаси доирасида параллел дастурлаш тилларини ишлаб чиқишда, тил конструкциялари ва механизмларини таниш дастурлаш парадигмаларидан ва тасдиқланган параллел дастурлаш тилларидан мерос қилиб олиш мумкин.
Aввало, бу биринчи параллел дастурлаш тили APLда таклиф қилинган маълумотлар тузилмалари бўйича функциялар ва операцияларни тақсимлашнинг алгебраик механизмлари. Бир вақтнинг ўзида назорат қилишнинг тасвирий воситаларини янада соддалаштириш, қайта ишланаётган маълумотлар майдонида итерация бўшлиғини қуриш асосида циклларни яширин параллеллаштириш учун Sisal тилида таклиф қилинган ёндашув билан таъминланади.
Оддий дастурлашдан анча мураккаб бўлган параллел дастурларни ишлаб чиқиш, отладка, синовдан ўтказиш ва текшириш муаммолари янада кескинлашмоқда. Aйнан шу ерда замонавий тилларни яратиш ва тизимли дастурлаш, параллел дастурлашда муваффақиятли тажрибани интеграциялаш учун воситалар ва усулларни излаш ҳамда параллел ҳисоблаш усулларини муваффақиятли ўргатиш бўйича тадқиқот фаолияти жамланган. Портатив дастурларни, жараённи визуализация қилиш воситаларини, бошқарувни тартибга солишни ва хотирага кириш интизомини ишлаб чиқишда мос ечимларни таҳлил қилишга эътибор қаратилади.
Параллелизм дунёсидаги деярли барча асосий дастурлаш тушунчалари (дастур, тармоқланиш, цикл, ҳодиса, хотира, натижа) ўзгариши ёки кенгайиши содир бўлади. Параллел дастурлаш учун хос бўлган бир қатор тушунчалар пайдо бўлади (процессор, тармоқ, кутиш, давомийлик, филтр, тўсиқ). Дастурлар кўп тармоқли бўлмоқда, цикллар параллел бўлмоқда, хотира копиялар ва репликаларга эга бўлмоқда, ҳодисалар турли хил синхронлаштирилган жараёнларда бир вақтнинг ўзида содир бўлмоқда, натижани ҳисоблаш жараённинг тугашини англатмаслиги мумкин. Концепцияларни бундай қайта кўриб чиқиш нафақат дастурлаш услубига таъсир қилади, балки дастур кодини яратиш босқичида компиляция характерини ҳам ўзгартиради. Жараённи бошқаришнинг типизацияси воситаларига мос келадиган схематик даражадаги қайта ишлатиладиган компонентлардан фойдаланиш техникасининг роли ортиб бормоқда.
Бир вақтнинг ўзида фақат битта жараён мавжуд деган фараз остида кетма-кет жараёнларнинг ўзаро таъсирини ифодалаш учун мослаштирилган бир қатор стандарт императив дастурлаш тилларининг версиялари мавжуд. Ушбу ёндашув билан дастурда критик интерваллар аниқланади, бу дастурларни параллеллаштиришда фойдалидир. Кўпгина анъанавий дастурлаш тиллари компилятор томонидан параллеллаштириш учун мос бўлган мустақил ҳаракатлар билан бўлимларни ажратишни таъминлайдиган махсус кенгайтмалар ёки кутубхона функциялари ёрдамида локал параллелизмни ифодалаш учун мослаштирилган.
Катта умидлар “дангаса” деб аталадиган ҳисоблаш схемасини афзал кўрган ҳолда, тилда параллел дастурлар ва маълумотлар турларининг спецификациясига қатъий функционал ёндашув билан боғлиқ. “Дангаса” ва “фаол” ҳисоблаш усулларининг афзалликлари ва камчиликларини бир-бирига қўшиб қўйиш Haskell қатъий функционал дастурлаш тилидаги “монадлар” тушунчаси билан қисман юмшатилади (Монад – бу функционал дастурлаш тилларидаги махсус маълумотлар тури бўлиб, улар учун сақланган қийматлар бўйича маълум операцияларни бажариш учун императив кетма-кетликни ўрнатиш мумкин). Тил конструкцияларининг семантикасини аниқлашнинг ўзига хос хусусиятлари ҳали ҳам дастурларнинг қулай ўқилиши ва уларни отладка қилиш муаммоларини ҳал қилишни акс эттирмайди. “Мемоизация” – деб аталадиган мураккаб ҳисоб-китобларни жадвалга киритиш ҳисоблаш мураккаблигини камайтириш учун машҳур амалий воситага айланмоқда (Мемоизация – дастурлашда, такрорий ҳисоб-китобларни олдини олиш учун функцияларни бажариш натижаларини сақлаш).
Ҳозирги вақтда параллел дастурлаш масалаларининг турли синфларига мўлжалланган юзлаб функционал дастурлаш тиллари мавжуд. Функционал дастурлаш тиллари дастурларни тақдим этиш ва ҳисоблаш тажрибалари ва ахборот жараёнларини ташкил этишда деярли барча маълум ёндашувларнинг типик воситалари билан бойитилган. Параллел жараёнларни ташкил этиш таъминланади. Маълумотлар ва дастурларни визуализация қилиш имконияти мавжуд. Стандарт ва объектга йўналтирилган дастурлаш воситалари мавжуд. Компиляцияни бошқариш ва компиляторларни яратиш қўллаб-қувватланади. Бугунги кунга келиб, функционал дастурлашнинг ресурс-эксплуатацион қийинчиликлари ҳақидаги хавотирлар ўз аҳамиятини йўқотди. Функционал дастурлаш таърифлар ва акслантиришларнинг рекурсив техникаси, функция аргументларини қайта ишлашдаги параллелизми, “дангаса” ҳисоблашлари ҳамда тармоқланишлардаги “шарт” тушунчасини “страж”(“қўриқчи”) ёки “образец”(“намуна”) тушунчаларига қисқартириш билан ёрдам беради.
Aмалий функционал дастурлаш тиллари оиласида тақсимланган ва параллел ҳисоблашни ташкил қилиш тиллари муҳим ўрин тутади. Aмалиётчилар Ericsson фирмаси томонидан ишлаб чиқилган Erlang функционал дастурлаш тилини мақташади