ПОӘК 042-39.1.56/01-2014
|
05.09.2014 ж. № 1 басылым
|
беттің
|
ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
Семей қаласының ШӘКӘРІМ атындағы МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ
|
3 деңгейдегі СМК құжаты
|
ПОӘК
|
ПОӘК
042-39.1.56/01-2014
|
ПОӘК
«Пареллельді есептеулер»
пәнінің оқу-әдістемелік кешені
|
05.09.2014 ж
№1 басылым
|
«ПАРАЛЛЕЛЬДІ ЕСЕПТЕУЛЕР»
ПӘНІНІҢ ОҚУ-ӘДІСТЕМЕЛІК КЕШЕНІ
5B060200 - «Информатика» мамандығына арналған
ОҚУ-ӘДІСТЕМЕЛІК ЖИЫНТЫҚ
Семей
2014
МАЗМҰНЫ
Глоссарий
|
Дәрістер
|
Практикалық сабақтар
|
Студенттердің өздік жұмыстарының құрылымы
|
Әдебиеттер тізімі
|
Глоссарий
call pvmfexit( info ) - PVM жұмысын аяқтайды.
call pvmfkill( tid, info ) – tid - идентификаторымен жұмысты аяқтайды.
call pvmfspawn( task, flag, where, ntask, tids, numt ) task - орындалатын файл аты;
INTEGER ntask – орындалатын программалар саны;
INTEGER tids - мәндер массиві.
INTEGER flag - іске қосу опциясы;
MPI(Message Passing Interface ) – хабарламаларды беру интерфейсі.
MPI_Comm_rank – процесстер рангісін анықтайды.
MPI_Comm_size - процесстер санын анықтайды.
MPI_Recv – хабарламаның блокталынып алынуы.
MPI_Send – хабарламаның блокталынып берілуі.
msgtag – осы хабарлама тэгі;
nlnts – бүтін сандар саны;
PVM _Recv – блоктап алау.
PVM _Send – тағайындалған процесске хабарламаның асинхронды берілуі
PVM параллельді виртуальды машина.
PVM_initsend (int encoding) – үнсіз келісім бойынша инициализациялайды;
PVM_pkint – бүтін сандарды жинау.
PVM_rnkbuf (int encoding) – хабарламаны орналастыратын жаңа буфер құрып, идентификаторды қайтарады;
PVM_setsbuf (int bufid) – ағымдағы буферді хабарлама жіберуге дайындайды;
PVM_upkint – жиналған бүтін сандарды қайта ашу.
startAddress – бірінші бүтін сан адресі;
tid – хабарлама жіберетін есеп идентификаторы;
where - іске қосылатын орын;
Параллельді компьютер – есепті сандық түрде шешіп, үйлесімді шешуге қабілетті процессорлардың жиынтығы.
Параллельді программа – бұл әр процесс өзінің меншікті процессорында жүріп қана қоймай, параллель орындалатын программа.
Дәріс 1. Кіріспе. Параллель компьютерге сұраныс. Параллель программалаудың дамуы
Мақсаты: Параллельдік есептеулер пәнінің негізі параллель компьютерлер, параллель программалар, параллель есептеулер туралы түсінік беру.
Кілттік сөздер: параллель, параллель программалар, параллель компьютерлер, векторлы-конвейрлі компьютерлер, жоғары өндіруші программалар
Жоспары:
1. Кіріспе. Параллель программалаудың дамуы.
2. Параллель компьютерге сұраныс
3. Параллельді есептеулер туралы негізгі түсініктер.
1. Соңғы жылдары пайдаланып жүрген есептеуіш машиналардың есептеу жылдамдығы мен сапасына көп көңіл бөлінетін болды. Сондықтан қазіргі кезде қуатты суперкомпьютерлер және көппроцессорлы компьютерлер жасалынуда. Олардың мүмкіншіліктері өте зор. Берілген операцияның орындалуы жеделдеді, әрі нәтижеге жету жылдамдығы өте жоғары.
Жоғарғы өндіруші техникалар қазірде мынадай: Векторлы-конвейерлі компьютерлер, үлестірімділі-жадылы массивті-параллельді компьютерлер, ортақ жадылы параллель компьютерлер, кластер архитектуралы компьютерлер бағыттарда дамуда. Олар деректерді параллель өңдеу және параллель алгоритмдерді өңдеуді қолдануға негізделеді. Арнаулы программалы жасақпен жұмыс жасай білу үшін және параллель алгоритмін құрып және программалаудың параллельділік тәсілін меңгеру үшін сәйкес білім мен біліктілік қажет.
Бұл пәннің мақсаты – параллельді есептеудің негізін қалыптастыру, параллельді алгоритмдерді талдау. Пәнде үш мәселе қарастырылады: аппараттық жабдықталуы, программалау, алгоритмдер.
2.Параллель компьютерлерге сұраныс және параллель программалаудың даму кезеңдері
Параллель компьютер дегеніміз – есепті сандық түрде шешіп, үйлесімді шешуге қабілетті процессорлардың жиынтығы.
Параллельді программа – бұл әр процесс өзінің меншікті процессорныда жүріп қана қоймай, параллель орындалатын программа.
Есептеу жылдамдығы жоғары, есептеу уақыты аз, сонымен бірге деректер массивін өңдей алатын сұраныс қай кезде де орын алып отырған.
Бірақ компьютерлік технологияның дамуына байланысты параллель компьютерлерді дамыту техника мен экономика салаларына өте қажет болды. Жай өмірден параллельділікке мысал келтірсек, көктем басталысымен, ағаш жапырақтарының барлығы бірге өркендей бастайды, ал оркестрде барлық әртүрлі аспаптар ойнағанда, бір ғана әуенді естиміз.
Параллельді компьютерлер мен параллельді есептеулер қолданылатын облыстарға тоқталсақ:
- күрделі жүйені сандық модельдеуде: ауа-райын болжау, гендік инженерия, интегралдық схеманы жобалау, жаңалықтар, кезекті космосқа ұшырылу туралы жедел хабар, т.б.
- бизнесте, коммерциялық салада: видеоконференциялар, параллель мәліметтер қоры, банктік транзакция, т.б.
- техникада: медицина саласында, автоматты түрде диагноз қою, жер сілкінуді болжау, айналадағы ортаның ластануын анализдеу, дәрі-дәрмек препараттарын жасау, т.б.
- білім беру саласында: кеңейтілген графика және виртуальды әлем, әсіресе, компьютерлік ойындар құрастыру.
Жоба жасаушылар параллельділікті қолдану кезінде көптеген қиыншылықтарға кезігуде. Себебі, компьютер жұмысы негізгі операцияны орындауға кететін уақытқа тәуелді. Ал, келіп түскен командалар мен мәліметтер ағынын бір мезгілде өңдеп отыратын процессор «тактілі циклмен» жұмыс жасау керек. Бұл қиыншылықтарды шешу үшін компьютер жобасын жасаушылар компьютерді күрделендіріп, түрлендіру үшін мынадай тәсілдерді қолдана бастады:
- конвейерлі өңдеу (бірнеше команданың әртүрлі стадиялары бір мезгілде орындалады);
- функционалдық модулдер жиынын кірістіру (бірнеше көбейткіштер, сумматорлар, және т.б. жеке командалар ағынымен басқарылады),
- жеке процессоры, жадысы және логикалы өзара байланысты(желімен) «компьютерлер жиынының бірігуі».
Pentium III компьютерін 70 жылдардағы компьютерлермен салыстырғанда суперкомпьютер болып есептелетін еді, қазір ол атау мұндай компьютерлерге сай емес. Суперкомпьютерлердің өнімділігі жоғары және жедел жады мен дискілік жады көлемі үлкен болады. Қазірде дүние жүзінде 500 ең қуатты компьютерлердің арасында 1-ші орын алып отырған компьютер – ASCI WHITE. Оның архитектурасы – 8192 процессорлы, жедел жадысы 4 терабайт, өнімділігі – секундына 12 триллион операция жасайды.
Әрине, бұл компьютерлердің құны да арзан емес, бірнеше миллион доллар тұрады. Осыншама қымбат компьютерлерді пайдаланатындай бізде қандай күрделі есептер бар? Ол есептер соншама маңызды ма? Осы сұрақтарға жауап беру үшін мынадай бір мысал қарастырайық.
3. Мұнай өндіретін процесті қарастырайық. Жер асты резервуарлары қазылған скважиналардан тұрады, біреуінен мұнай сорылса, екіншісінен су төменге айдалады. Бізге мынадай есеп қойылады: осы резервуардан алынатын мұнайдың запасын анықтау керек немесе бізге қаншама қосымша скважина керек, осыны есептеу үшін біз схеманы қарапайым елестетейік. Резервуарды куб деп қарастырайық. Куб көлемі - 100х100х100 нүктелерден тұрады. Әрбір нүктеде орындалатын функциялар – жылдамдық, қысым, температура, компоненттің концентрациясы (су, газ, мұнай, т.б.). Барлығы 5-20 функция (орташа-10). Бұл функциялар сызықты емес. Сондықтан оларды есептеу үшін 200-1000 операция орындалу керек (орташа -500).
Жүріп жатқан процестер стандартты емес, сондықтан қадамдар саны 100-1000 (орташа-500). Сонда куб ішінде орындалатын арифметикалық операциялар саны:
106 (нүктелер)*10 (функция)*500 (операция)*500 (қадам)=2.5*1012, яғни 2500 млрд. арифметикалық операция. Әрине, мұндай операцияларды қарапайым компьютерлермен орындасақ қаншама уақыт кетер еді.
Бақылау сұрақтары
Параллель компьютерлер дегеніміз не?
Параллель есептеулер қандай салларда қолданылады.
Суперкомпьютерлер дегеніміз не?
Суперкомпьютерлердің қандай түрлері бар?
Әдебиеттер
Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002
Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с. англ. –М.: Издательский дом «Вильямс», 2003
Акжалова А.Ж. Параллельные вычисления (учебное пособие). – Алматы, 2004
Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем – СПб., 2002
Дәріс 2-3. Параллельділік. Программалаудың екі моделі. Тізбектелген және параллель Параллельді компьютерлер: аппараттық жабдықталуы
Мақсаты: Параллельділік және программалаудың модельдері ұғымымен
таныстыру.
Кілттік сөздер: параллельділік, тізбектелген, параллель, модель, дискілік жады, процессор, көп деңгейлі.
Жоспары:
Параллельділік
Программалау модельдері
Параллель компьютерлердің аппараттық жабдықталуы
1. Параллельділік. Қазіргі бір процессорлы машиналар компоненттері: орталық процессордан, бастапқы жадыдан, бір және көп деңгейлі кэш жадыдан, екінші ретті жадыдан (дискілік жады) және әр түрлі периферийлік құрылғылардан тұрады.
Программа орындауға қатысты түйінді (өзекті) компоненттер: орталық процессор, кэш және жады.
Жалғыз процессорлы компьютерлер архитектурасын дамыту үшін мынадай әр түрлі тәсілдерді қолдануға болады:
Орталық процессордың бір ішкі бөлігін 4 функционалдық модульдермен (сумматор, көбейткіштер) алмастыру;
Орталық процессордың өткізу жолағын (қабілетін) үлкейту үшін оған жадының 2 не оданда көп блоктарын қосу;
Уақыт бірлігінде орындалатын командалардың санын арттыру үшін бір жадылы екі және одан да көп процессорларды қосу;
Барлық компьютерлердің жұмыстары бір бағытта бағытталу үшін, яғни бір программаны орындау үшін толық компьютерді машиналар желісіне қосу;
Параллельділікті әртүрлі деңгейіне қарай классификацияланады:
тапсырма деңгейінің параллельдігі;
программа деңгейінің параллельдігі;
командалар деңгейінің параллельдігі;
арифметикалық және биттік туралау параллельдігі;
Тапсырма деңгейінің параллельділігі - параллельділіктің ең жоғарғы деңгейі. Бұл деңгейде орталық процессор мен енгізу-шығару жүйесі параллель жұмыс жасайды.
Мысал келтірсек: бірнеше тапсырмалар бір уақытта жадыда сақталып тұрады да, тек олардың біреуі кез-келген берілген уақытта орындалады. Егер бұл тапсырма енгізу-шығару қызметін керек ететін болса немесе дискіден оқу керек болса, бұл операция инициализацияланады, яғни тоқтатылады, басқа тапсырма орындауға жіберіледі. Ары қарай енгізу-шығару операциясы аяқталған соң және мәліметтер алынған соң, басқару кейін, яғни алғашқы тапсырмаға қарай қайтарылып процесс жалғасады.
Программа деңгейінің параллельдігі - бір программа оны құраушы бөліктеріне бөлініп орындалатын процесс. Параллельділіктің бұл типі процессордың жиынымен іске асады. Бұл көп процессорлары машина барлық берілген есептеулерді бір мезгілде орындай алады.
Командалар деңгейінің параллельдігі - бұл типті іске асыратын негізгі тәсіл – конвейерлер. Бұл жағдайда не жеке командалар қалқаланады, не берілген команда бағыныңқы операцияларға жіктеледі. Олар да өз кезегінде қалқалану жағдайына келтіріледі.
Арифметикалық және биттік туралау параллельдігі - параллельдігінің ең төменгі деңгейі. Бұл деңгей - орталық процессордағы арифметика-логикалық құрылғыға жатқызылады.
2. Программалау модельдері. Параллельді есептеулер сапасына мына көрсеткіштер әсер етеді:
1. Есептеудің жедел орындалуы.
2. Есептелу тиімділігі.
3. Есептелу құны.
4. Есептелу көлемі.
Есептелудің жедел орындалуы (speedup) мына шамамен анықталады:
p – процессорлар саны
Есептелудің тиімділігі мына шамамен анықталады:
p-процессорлар саны
Есептелу құнының пайдалы бағасы – параллельді есептелетін уақыттың процессорлар санына көбейтіндісін айтамыз.
p - процессорлар саны
Мысалдар келтірейік:
1-мысал. «Операциялар-операндтар» графы түрінде есептеу моделі. Есептеу моделін жеңілдету үшін, есептеу барысындағы кез-келген есептеу операциясына кететін уақытты бірдей және 1-ге тең деп қабылдаймыз (өлшем бірлігін өз бетімізше аламыз).
Мынадай есеп қойылсын: Қарама-қарсы бұрыштарының координаттары берілген тіктөртбұрыштың ауданын есептеудің алгоритмін граф түрінде көрсетейік.
Бұл мысалдан, есеп шешуде таңдалған алгоритмді орындау үшін есептеу схемасын басқаша да құруға болады және басқаша есептеу моделін құруға болады. Сонда әртүрлі есептеу схемалары параллельділіктің әр түрлі мүмкіншіліктерін қарастыруға мүмкіндік береді, яғни есептеу моделін құру кезінде біздің алдымызда алгоритмді есептеу схемасының параллельді орындалу тәсілдерінің ең қолайлысын таңдау мақсаты тұрады.
2-мысал. Сандардың қосындысын табу алгоритмдерін қарастырайық.
n- қосындылардың саны.
Бұл есепті шешудің параллельді әдісін бастамас бұрын алдымен қарапайым жағдайды қарастырамыз, яғни
Мұның алгоритмі тізбектеп қосудан шығады.
S=0,
S=S+x1,...
Бұл алгоритмді тізбектеп есептеу схемасы мынадай:
Бұл «стандартты» алгоритм тізбекті орындалады да, параллельді орындала алмайды. Параллельді орындалу үшін қосындыны табу операциясын ассоциативті орындап, есептеу процесін басқаша құру керек. Бірінші итерацияда барлық берілгендер екі бөлікке бөлінеді, және әр жұп үшін олардың қосындысы табылады, Әрі қарай барлық алынған қосынды тағы жұп бөлікке бөлініп, жұп мәндерінің қосындысы табылады, тағы с.с. Бұл есептеу схемасы – қосындыны есептеудің каскадты схемасы деп аталады, оны граф түрінде тұрғызуға болады.
n=2k
Мұндағы итерациялардың саны: k=log2n,
Ал, қосу операцияларының саны Kсонғы=n/2+n/4+...+1=n–1
1. Параллельді программалық жабдықтау.
2. Параллельді компьютерлердің типі.
Енді соларды қарастырайық.
Достарыңызбен бөлісу: |