Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Параллельные вычисления лекция(Шалданбаев).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
602.62 Кб
Скачать

Параллель алгоритмдер. Параллель алгоритмдерді өңдеу: декомпозиция (сегменттеу), коммуникацияларды жобалау, үлкейту. Есептеулерді жобалау. Параллель сұрыптау алгоритмдері.

Паралелеь алгоритмдер

Берілген тарудағы 1-бөліммінде біз әртүрлі сұрыптау алгоритмдерін қарастырамыз:

  1. Аттап өту сұрыптамасы (ранг әдісі)

  2. Салыстыру және ауыстыру сұрыптау алгоритмі.

● Салыстыру және ауыстыру

● Көпірші әдісмен сұрыптау және «тақ-жұп» сұрыптау.

● Бірігу сұрыптауы

● Жылдам сұрыптау

екінші бөлімді – параллельдеудің сандық әдістері: матрицаларды көбейту; сызықтық теңдеулер жүйесін шешудің тура және итерациялық әдістері.

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;