- •«Параллель есептеулер» пәні бойынша 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. Фурье қатары
Параллель алгоритмдер. Параллель алгоритмдерді өңдеу: декомпозиция (сегменттеу), коммуникацияларды жобалау, үлкейту. Есептеулерді жобалау. Параллель сұрыптау алгоритмдері.
Паралелеь алгоритмдер
Берілген тарудағы 1-бөліммінде біз әртүрлі сұрыптау алгоритмдерін қарастырамыз:
Аттап өту сұрыптамасы (ранг әдісі)
Салыстыру және ауыстыру сұрыптау алгоритмі.
● Салыстыру және ауыстыру
● Көпірші әдісмен сұрыптау және «тақ-жұп» сұрыптау.
● Бірігу сұрыптауы
● Жылдам сұрыптау
екінші бөлімді – параллельдеудің сандық әдістері: матрицаларды көбейту; сызықтық теңдеулер жүйесін шешудің тура және итерациялық әдістері.
8.1. Ранг әдісімен сұрыптау
сұрыптаудың бұл түрінің екінші атауы – атап өту сұрыптауы. (Wilkinson6 B. and Allen6 M., 1999). Бұл сұрыптаудың негізгі идеясы: берілген сандардың ішінен таңдалғаннан аз сандарды санаймыз. Бұл санау тізімдегі таңдалған санның позиция нөмерін қамтамасыз етеді, яғни тізімдегі таңдалған санның позиция нөмерін қамтамасыз етеді, яғни тізімдегі оның «рангін» табамыз.
a[0],a[1],…, a[n-1] массивіндегі сақталған n саны берілген деп есептейік. Ал нәтижелері сұрыпталған b[0], b[1], … , b[n-1] массивінде сақталған. Тізбекті коды келесі түрде сипатталуы мүмкін.
For (i=0; i<n; i++) // әрбір санға
{
x=0
For (i=0; j<n; i++) // считают число из списка чисел меньшее чем выбранное
If (a[i]>a[j]) x++;
B[x]=a[i]; // копирует номер в провильное место
}
Сұрақ: Қандай жағдайда берілген код сәтсіз болады? Талданған жағдайды ескере отырып программа жаз.
Осы кодты n процессор үшін қайта жазуға тырысамыз.
n процессор бар деп есептейік. Әрбір процессор бір санға бекітілген. Бұл жағдайда әрбір процессор сандардың біреуінің соңғы индексін О(n) қадамға яғни time complexity=O(n) табу.
Мұнда біз forall операторын қолданамыз, мұндағы i-процессор нөмері.
Forall (i=0; i<n; i++) //әрбір санға бір уақытқа (параллельдік)
{x=0;
for (j=0; j<n; j++) if (a[i]>a[j]) x++;
b[x]=a[i];
}
көптеген программаларда, дербес жағдайда, сұрыптау орындайтын программада ағымдағы сандарды уақытша қажетті қосымша айнымалыға орын бөлінеді, келешекте басқа санмен позициясын алмастыруды жүзеге асыратын әдістеме қарастырылады.
Төмендегі осы уақытша айнымалыларды қолданбайтын әдісті қарастырамыз.
8.2. Салыстыру-және-ауыстыру
А және В екі сан бар деп есептейміз.
Салыстыр және ауыстыр амалы тізбекті кодта төменде көрсетілген:
If (A>B)
{temp=A; A=B; B=temp;}
берілген ситуация хабар беру жүйесі үшін келеді.
Р1 және Р2 екі процессоры бар деп есептейік. Р1 А-дан Р2. В-дан тұрады. 18-суретте мүмкін салыстыру және ауыстыру схемасының бірі келтірілген:
Последовательность шагов
Последовательность шагов
S
end(A)
I f A>B send (B)
Else send(A)
If A>B load(B)
Else load(A)
18-сурет. Салыстыру және ауыстыру 1-ші схемасы.
Бұл схеманың коды төмендегідей:
Р1 Процессор Send(&A6P2); Recv(&A,P2); {send(&B,P1); B=A;} Else Send(&A,P1); |
Р2 Процессор Recv(&A6P1); if(A>B) |
Келтірілген схеманың әдісі мына түрде болады:
Келтірілген схеманың әдісі мына түрде болады:
Send(A)
Send(B)
If A>B load (B) if A>B load (A)
19-сурет. Салыстыру және ауыстыру 2-ші схемасы
Бұл схема коды төмендегідей:
Р1 Процессі Send(&A,P2); Recv(&B,P2) If (A>B) A=B6 |
Р2 Процессор Recv(&A,P1); Send(&B6P1); If (A>B) B=A; |
