197
042 int tmain (int argc, cgar* argv [])
043 {
044 struct tree tptr tree = create_tree(12);
045 tval int sum;
046 tsum (tree, &sum);
047 terrprint (“sum = %u\n”, sum);
048 return 0;
049 }
Бұл бағдарламада tree типтегі құрылым ағашы алдымен
create_tree
функциясымен туындайды, одан кейін tsum рекурсивті
функциясында араланады. Алдыңғы мысалдағы
сияқты ағаштың әрбір
түйінінде параллельдеу жүргізіледі: алдымен бұтақтың оң және сол жақ
тармақтарында шақырулар пайда болады, содан кейін ғана аралау
нәтижелеріне қатынас жасалады.
Негізгі сӛз (кілттік сӛз) tptr дайын емес айнымалыларға жасалған
ауқымды сілтемелерді суреттеу үшін қызмет етеді. Жазу операциясы кезінде
мән жүйенің керекті торабына беріледі, онда ол
мән сәйкес Т-айнымалыға
жазылады және оны дайын етеді.
Т-жүйесін пайдалану тәжірибесі ТС тілінде бағдарламаны құрастыру
процесінде келесі қадамдар тізбегін ұсынады:
1.
Кодтың дизайнын құрастыру. Бұл этапта мына сұрақтар шешіледі:
қандай алгоритм фрагменттері ТС-тілінде Т-функциясы түрінде іске
асырылады, ал қандай фрагменттер үйреншікті тізбекті орындалатын
код түрінде C, C++ немесе Fortran стандартты тізбекті бағдарламалау
тілдерінде іске асырылған.
2. Бір процессорлық компьютерде орындау және алғашқы жӛндеу.
Құрастырылған ТС-бағдарлама дәстүрлі қарапайым бір процессорлық
компьютерде тізбекті режимде Т-жүйесін қолданбай жӛнделеді. Ол
үшін С тіліне қосылған барлық жаңа кілттік сӛздер автоматты түрде
сәйкес макростар (мысалы: tptr сӛзі - ―*‖: tval - ―бос― және т.б.)
кӛмегімен қайта анықталады.
3. Кӛп процессорлы құрылғыларда жӛндеу. ТС-бағдарламасын бір
процессорлы компьютерде тізбекті режимде жӛндеуден кейін,
параллельді есептеу ортасында толық функционалды жӛндеу
жүргізіледі.
4. Тиімділеу. Соңғы этапта, трассировка,
профилировка және басқа да
құрылғылар
кӛмегімен
кезкелген
параллель
бағдарламалау
технологиясына тән бағдарламаны тиімділеу процесі жүргізіледі.
Басқа параллель бағдарламалау жүйесімен салыстырғанда Т-жүйесінің
артықшылығы екі жағдайда анық білінеді. Бірінші жағдай, бағдарламаны
орындауға дейін параллель процесстердің жұмысын қалай реттеу туралы дәл
ақпараттың болмауы. Екінші жағдай, бағдарламаны есептеу схемасы
198
функционалды модельге жақын және бір-бірін рекурсивті шақыратын
функциялар жиынының кӛмегімен тиімді кӛрсетілуі мүмкін
кездерде пайда
болады. Т-жүйесінің күшті жағының бірі, ол бағдарламашыны параллель
бағдарламалауға
тән
кӛптеген
дәстүрлі
әркеттерден
босатады:
бағдарламаның параллель фрагменттерін айқын ұйымдастыру, оларды
кластер тораптарына тарату,
фрагменттер жұмысын синхрондау, олардың
арасында бір-бірімен мәлімет алмасудың айқын операцияларын орындау.
Т-жүйесінің кемшіліктеріне де тоқтала кетейік. Негізінен, ол
кемшіліктер жайында айқын түрде айтыла бермейді, бірақ олар туралы білу
керек екені түсінікті. Типтік мысал – деректерді кластердің бір торабынан
екінші торабына жіберетін Т-функциясының шақыруы. Сырттай қарағанда
ешқандай күмәнді нәрсе жоқ, ал қосымша шығындар ӛте үлкен
болуы
мүмкін. Егер бағдарламаны жобалау барысында бұл факторды ескермесе,
онда оның тиімділігі жағынан үлкен проблемалар туындауы мүмкін. Жүйе
тиімділікке кепілдік бере алмайды. Мұнда да, Т-жүйесі үшін бағдарламаны
іске асыру кезінде бағдарламашы алгоритмді функционалды түрде
мазмұндап және бағдарламаны таза Т-функцияларының жиыны түрінде
сипаттауға міндетті. Бұны ыңғайсыз деуге болмайды, бірақ ол әдеттегіден
тыс және мұнда бағдарламашыға потенциалды
параллель фрагменттердің
тімді ӛлшемін де таңдау керек болады. Т-функциясының ӛте кіші есептеу
күрделілігі кӛп мӛлшердегі қосымша шығындарға әкелуі мүмкін. Ӛте үлкен
есептеу
күрделілігі
(қиындықтары)
параллель
фрагменттердің
аз
туындауына, ол ӛз кезегінде жүйе есептеу тораптарының бірқалыпсыз
жүктелуіне әкелуі мүмкін.
Достарыңызбен бөлісу: