- •«Параллель есептеулер» пәні бойынша 050602-Информатика мамандығының студенттері үшін лекциялар жинағы
- •Шымкент- 2009
- •1. Паралель программалау дамуының хронологиясы
- •Параллелизм. Программалау модельдері: параллель және тізбекті. Деректер параллелизмі мен есептер параллелизмі. Программалаудың негізгі параллель модельдері.
- •2 Параллелизм
- •2.1. Деректер параллелизмі мен есептер параллелизмі
- •Программалау модельдері: параллель және тізбекті
- •Программалаудың негізгі параллель модельдері
- •3.1. Параллель компьютерлердің типтері
- •3.1.1. Жалпы қатынау жадылы көппроцессорлы жүйелерге (бөлінетін жадылы)
- •Параллель компьютерлер. Жылдам әрекеттесуші аппараттық жасау.
- •3.1.2. Хабар беру мультикомпьтері және үлестірілген жадылы мультикомпьютерлер
- •Параллель компьютерлер типтері. Флинн таксономиясы. Жаңа таксономия құру спецификациясы.
- •4.1. Флинн таксономиясы
- •6.Процесстер және синхрондау
- •7.1 “Өндіруші –пайдаланушы” типті синхрондау
- •Параллель алгоритмдер. Параллель алгоритмдерді өңдеу: декомпозиция (сегменттеу), коммуникацияларды жобалау, үлкейту. Есептеулерді жобалау. Параллель сұрыптау алгоритмдері.
- •8.1. Ранг әдісімен сұрыптау
- •8.2. Салыстыру-және-ауыстыру
- •8.2.1 Деректерді бөлу
- •Сандық өрістерді параллельдеу: тік және итерациялық сызықтық теңдеулер жүйесінің шешу әдістері.
- •9.1 Сандық әдістерді параллельдеу
- •9,1.1. Матрицаларды көбейту
- •9.1.2. Сызықтық алгебралық теңдеулер жүйесін шешу
- •Параллель программалау. Ағындар мен деректерді өңдеу.
- •10. Параллель программалау
- •10.4.Occam- параллель программалау тілі
- •Жылдам әрекеттесуші фортран(hpf)
- •Pvm, mpi, OpenMp көмегімен таратылған деректерге құру және кіріс.
- •13. Қолданбалы есептерді шешуде параллель алгоритмдерді қолдану
- •Кескіндерді өңдеу типтері: кескінді өңдеудің төменгі, орташа және жоғарғы деңгейі.
- •15 Лекция. Фурье түрлендіруі және Фурье алгоритмдері
- •3. Фурье қатары
Параллелизм. Программалау модельдері: параллель және тізбекті. Деректер параллелизмі мен есептер параллелизмі. Программалаудың негізгі параллель модельдері.
2 Параллелизм
2.1. Деректер параллелизмі мен есептер параллелизмі
Қазіргі заманғы бірпроцессорлы машина бірнеше компоненттен тұратын белгілі.
Primary memory
Level 2 cache
Level 1 cache
CPU
2-сурет. Бірпроцессорлы машина.
● орталық процессор (CPU);
● алғашқы жады;
● бір және бірнеше деңгейдегі кэш-жады;
● екінші жады (дискідегі жады);
● әртүрлі сыртқы құрылғылар.
Программаның орындауына қатысты түйінді компоненттер: орталық процессор, кэш және жады.
Бірпроцессордың архитектурасын жақсартудың әртүрлі әдістері бар:
орталық процессордың бір ішкі бөлігінің орнына қосындаушы (көбейткіштердің) төрт модулін қолдану;
өткізу жолағын үлкейту үшін орталық процессорға екі немесе бірнеше жады блогын қосу;
уақыт өлшемінде орындалатынкомандалар санын үлкейту үшін бір жадының бір немесе бірнеше процессорды қосу;
барлық компьютерлердің жұмысы бірге бір ғана программаны шешуге бағытталатыңдай толық компьютерді (процессор, жады және енгізу-шығару құрылғысын қосу) машина желісіне қосу;
Параллелизм
Параллелизм әр түрлі деңгейде топталуы мүмкін:
● тапсырма деңгейіндегі параллелизм;
● программа деңгейіндегі параллелизм;
● команда деңгейіндегі параллелизм;
● арифметикалық және биттік туралайтын параллелизм.
Тапсырма деңгейіндегі параллелизм – параллелизмнің жоғарғы деңгейі.
Мысалы, лаборатория немесе компьютер орталығы берілген уақыт аралығында көптеген есептердіорындайды. Оған үлкен компьютерлік желілерді сатып алу арқылы жетуге болады, кез – келген уақытта көп тапсырма орындалады, және қолданушының кез-келген тапсырмасы басқаларға қарағанда тез орындалмайды.
Тапсырма деңгейіндегі параллелизм бір компьютер шегінде бір тапсырманы немесе бірнеше тапсырманың тәуелсіз есептер жиынтығы ретінде өңдей отырып қолданылады. Орталық процессор және енгізу – шығару жүйелері параллель жұмыс і стейді.
Берілген параллелизм түрінің мысалы: біруақытта жадыда бірнеше тапсырма болады, сонымен қатар кез – келген берілген уақытта олардың тек біреуі орындалады. Егер бұл тапсырма енгізу – шығару немесе дискіден оқу типті қызметті қажет етсе, онда амал инициалданады, жоғарыдағы қызметтің бірін қажет еткен тапсырма тоқтатылып, басқа тапсырма орындау күйіне орналастырылады. Ары қарай, енгізу – шығару амалы аяқталғаннан кейін, басқару кері алғашқы тапсырмаға оралып, орындалу жалғасады.
Программаның деңгейіндегі параллелизм
Программа деңгейіндегі параллелизмде пбір программа бөліктерге, оның құраушыларына бөлінеді.
Мысалы, матрицалардың көбейтіндісі: С=AxB матрицаларды квадраттарға бөлу жолымен есептеледі:
В11 |
В12 |
В21 |
В22 |
А11 |
А12 |
А21 |
А22 |
С11 |
С
=
X |
С21 |
С22 |
Жалпы, программа деңгейіндегі параллелизм екі әдіспен көрінеді:
● берілген программаның тәуелсіз бөліктердеге бөлу;
● итерациялар арасында ешқандай байланыс жоқ циклің жеке итерацияларын қолдану.
Параллелизмнің бұл түрін процессорлар жиынтығы немесе функциональды модулдер жиынтығын қолдануы мүмкін.
Программа деңегейіндегі параллелизмнің көруінуінің қарапайым мысалы: қосындыларын есептеу. Төменде екі массив элементтерінің қосындысын есептеу коды көрсетілген:
for (i=0; i<N; i++)
A[i]=B[i]+C[i]
Қосындылар тәуелсіз, яғни B[i]+C[i] есептеуі B[i]+C[i]-ге тәуелсіз, кез – келген j<i үшін.
Бұл олардың кез-келген ретпен есептелетініін білдіреді, және әсіресе, көппроцессорлы машина барлық берілген есептеулерді біруақытта орындай алуы мүмкін.
Команда деңгейіндегі параллелизм
Программаның деңгейіндегі параллелизм – архетектураның төменгі деңгейі және компьютер ұйымдастыру саласына жатады. Параллелизмнің бұл түрін жүзеге асырудың жалпы әдісі – конвейерлер.
Бұл жағдайда, жеке командалар қабысуы мүмкін, немесе берілген команда ішкі амалдарға бөлінуі мүмкін, ал ол ішкі амалдар тағы да ішкі амалдарға бөлініп, олар да қабысуы мүмкін.
Бірінші жағдайда, мысалы, арифметикалық командамен қабыса отырып әдетте жүктеу командасын табады, ол жады мәнін орталық процессордың ішкі регистріне көшіреді. Екінші жағдайда, бәріне үлгеретін конвейердің мысалы бола алады. Ол арифметикалық өңдеу тірегі болады.
Ерекше атап өтетін жай: компилятор сапасы жүйеден жүйеге өткенде күрт өзереі, және ақпааық құрылғыларды компятор максималды қолдану үшін кодтық ұрылымын ерекше әдіспен өзгерту керек болуы мүмкін.
Мысалы, Cray фирмасының супен ЭЕМ-і вектордың ұзынығы – 64 бит немесе одан аз болғана неғұрлым тиімді және ұзын векторлардың кішкене бөліктеріне амалдар қолданатын қайта құру программалары жұмысты жақсарады.
Арифметикалық және иттік туралау параллелизм. Арифметикалық және биттік туралау параллелизмі – параллелизмнің ең төменгі деңгейі.
Параллелизмнің бұл деңгейі орталық процессордағы арифметикалық логикалық құрылғыға қатысты.
Мысалы, 64 битке қосынды екі түрлі әдісен есептелуі мүмкін:
барлық 64 битті бірден қосу (неғұрлым маңызды биттерге тасымал кез-келген екі биттің қосындысының жылдамдығындай есептеуі және болжауы мүмкін);
амалы 4 биттік бөлікке және 16 циклдағы толық қосындысын есептеуге болады.
Параллель программалық жасау үшін фундаментальды талаптарға бар:
● параллелизм;
● масштабтылық (әр жақтылық);
● жергіліктілік;
● модульдік.
Параллелизм – көптеген амалдарды біруақытта орындауға қабілеттілік.
Әр жақылық – процессорларды санын өсіруе «икемілік» қасиеті.
Жергіліктілік қашықтағы жадыға қатынаудың жергілікті жадыға қатынауына қатынастарының коэффициенттерінің жоғарылылығын білдіреді.
Модульдік – күрділ объектілердің қараайым компоненттерге декомпозициясы.
