Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002

Читайте также:
  1. Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002
  2. Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002 -600с.
  3. Место проведения:Санкт-Петербург, Малый пр. Петроградской стороны, д.84-86. Подробнее здесь: Open data Hackathon, малый зал Smart Hub.
  4. Параллельные жизни
  5. Программист. Санкт-Петербург, Россия

2. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с. англ. –М.: Издательский дом «Вильямс», 2003.

 

15-дәріс.

Тақырыбы: Кескіндерді өңдеу. Төменгі, ортаңғы және жоғарғы деңгейлерде кескіндерді өңдеу түрлері. Фурье түрлендіруі және Фурье алгортимдері

Мақсаты: Кескіндерді параллель өңдеу, соның ішіне Фурье түрлендіруін қолданып, өңдеу әдісін үйрету

Кілттік сөздер: кескін, төменгі деңгей, Фурье түрлендіруі, Фурье алгоритмі, ортаңғы деңгей, жоғарғы деңгей, пиксель.

Жоспары:

1. Кескіндерді өңдеудің төменгң деңгейі

2. Кескіндерді өңдеудің Фурье түрлендіруі

 

 

Кескіндерді өңдеудің төменгі деңгейі кескінді дұрыстау үшін және адам мен компьютер оны тануы үшін сақталған кескінге тікелей әсер етеді. Кескіндерді бұлай өңдеу көптеген облыстарда, соның ішінде, медициналық диагностикада, ішкі істердегі бармақ ізін тануда, өндірістік өнімдердегі ақауларды табу үшін және киноиндустрияда қолданылады. Басында кескін камераға түсіріліп, цифрлық түрде сақталынады. Сақталға кескін екіөлшемді пиксельдер массивінен тұрады. Кескін монохромды деп алып, сұр түсті пиксельдерге хабарлама жібереді. Кескін түсі әрқайсысы үш қарапайым түстің реңі болып табылатын үш мәнді (қызыл, жасыл, көк) қолданады.

Біз сақталған кескін сол жақ жоғары бұрыштан басталтын қарапайым координаталар жүйесін қолданады деп болжаймыз. Кескін пиксельдері екі өлшемді массивте сақталады да, оның элементтерін p[i][j] деп белгілеп аламыз және әрбір пиксельдің интенсивтілігі берілген массивтен табылады.

Өңдеудің төменгі деңгейі әрбір пиксельдің мәнін кескінді қандай да бір тәсілмен модификациялау үшін қолданылады. Көп жағдайда мұндай амалдар параллель орындалады.

Кей кездері пиксельдер идентификацияланатын тік сызықтар немесе қисықтармен ассоцияцияланады. Идентификацияның ең тиімді тәсілі Hough түрлендіруін қолдану. Hough түрлендіруі пиксель координаталарын сызық теңдеуіне жақын тәуелділік теңдеуін анықтау үшін қолданылады.

 

Есептерге қойылатын талаптар.

Әректтің басында өңдеудің төменгі деңгейінде параллель өңдеуді қолданудың маңыздылығын айта кеткен жөн. Айталық, кескін 1024×1024 пиксельден тұрады делік, мүндай пиксельдер картасымен және пиксельге 8 битпен сақтау өте өажет.

Ең критикалық фактор – есептеу жылдамдығы. Айталық, әрқайсысы тек бір рет қана өңделеді делік. Онда тек қаңқасының өзіне ғана 210 операциялар қажет. Қазіргі кезде барлық компьютерлер мүндай әрекет жасай алмайды. Нақты уақыт режимінде қосымшалар үшін есептеу шамамен секундына 60-85 каркас болуы керек. Чиптерді сигналды өңдейтін арнайы аппараттық қамсыздандыру ойлап табылды. Бірақ мұндай жүйелер параллель компьютерлер сияқты икемді емес.

 

Теңдеуі

Берілген өңдеудің бір деңгейінде қандай да порогты пиксельдер мәні сақталады, ал оден төмен басқалары 0 мәнін қабылдайды. Мысалыға, х мәнді пиксель берілсін, онда пиксельге орындалатын амал:

If (x< threshold) x=0; else x=1;

 

Контрастпен жұмыс

Берілген жағдайда сұр түстің мәндері деңгейінің диапазоны кескіннің кейбір детальдары көрнсін деп кеңейеді.

Медицинада тіс пен сүйек тканінің көзге көрінбейтін детальдарын табу үшін рентген кескіндерін қолданады. Бұл жағдайда контраст кеңеймесін сұр түстің шкаласы бойынша жұмсақ тканнің өлшемін анықтау үшін қолданады.

 

Сұр түс деңгейін азайту.

Бұл жағдайда сұр түсті ұсынуда қолданылатын биттер саны сақтау көлемін азайту мақсатында азаяды. Мұндай әрекетті жүзеге асырудың ең қарапайым тәсілі аз биттер мәнін жуықтау.

 

Параллель орындалуы.

Айталық бір процессор бір пиксельге тіркелген делік. Тура параллель орындалу әрбір процессорден бір уақытта орындалып жатқан әрбір процессорден 9 қадам орындауды талап етер еді. Мұнда барлық хабарлау тек оқу болғандықтан мәліметтер ену қарама – қайшылығы болмайды. Нүкте мәндерін орталандырудың параллель нұсқасы төрт қадамнан тұрады:

Қадам1. Әрбір процессор өзінің сол жағындағы пиксельдер санын алып, мәндерді өзі сақатап жатқан пиксельдер санына қосады.

Қадам 2. Әрбір процессор өзінің оң жағындағы пиксельдер мәнін алады да, жиналып жатқан сомаға қосады.

Қадам 3. Әрбір процессор төменнен жиналған мәндер жиынын екінші қадамдағыдан алып тастап, осы мәнді өзінің жиналған мәндеріне қосады. Ол сонымен қатар, келесі қадам үшін жиналған соманың ағымдағы мәнін сақтап қалу керек.

Қадам 4. Әрбір процессор үстінен жиналған мәндер жиынын екінші қадамдағыдан алып тастап, осы мәнді өзінің жиналған мәндеріне қосады.

Және, ақырында, әрбір процессор жиналған мәндерін ортақ мәнді табу үшін 9-ға бөледі. Сонда әәрбір процессорда төрт қосу байланысы және бір бөлу болады.

 

2. Кескіндерді өңдеудің Фурье түрлендіруі.

Кескіндерді өңдеу есебінің кең көлемі әртүрлі облыстарда жасалынды. Дискретті Фурье түрлендіруінің бір қолданылуы тегістеуде де үшкір шеттерді табуда да қолданылатын фильтрлеу. Фильтрлеу төмендегі екі функцияны салыстырып есептеу көмегімен жүзеге асырылады:

 

H(j,k)=G(j,k)xF(j,k)

мұндағы F(j,k) – бұл f(j,k) Фурье функциясының түрлендірілуі, ал G(j,k) – (g(j,k) Фурье функциясының түрлендірілуі. (j,k – х пикселінің координаталары ).

Фурьенің дискретті түрлендірілу функциясы:

Хк=1/N∑хje-2π(jk/n)

мұндағы хi N пиксельдер мәні, i- комплестік сан.

және Фурьенің кері түрлендіруі

хк=1/N∑Хje-2π(jk/n).

 

Практикада көбіне формуланы 1/N көпмүшесіз қолданады.

Сондықтан, әрі қарай біз бұл көпмшені түсіріп тастаймыз.

w=e-2πi/N

деп белгілейік.

Сонда формула мына түрде болады:

Хк=∑хjwjk)

болады.

Берілген формуланы жүзеге асырудың тізбектелген коды келесі түрде болады:

For (k=0; k<N; k++)

{ X[k]=0

For (j+0; j<N; j++)

X[k]=X[k]+a*X[j];

a=a*pow(w,k);

}

 

Бақылау сұрақтары

 

1. Фурье әдісі не үшін қолданылады?

2. Фурьенің дискреттң түрлендіру әдісі қандай?

3. Параллель орындалу неше қадамнан тұрады? Атаңыз.

 

Әдебиеттер

Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002

2. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с. англ. –М.: Издательский дом «Вильямс», 2003.

 

 

ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ

Қ. ЖҰБАНОВ АТЫНДАҒЫ АҚТӨБЕ МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ

 

Информатика және ЕТ кафедрасы

 

 

«Паралельді есептеу» пәні бойынша лабораториялық сабақтарға арналған

ӘДІСТЕМЕЛІК НҰСҚАУ

Күндізгі оқу бөлімі

«Информатика» мамандығының 4-курс студенттері үшін

 


І. ЛАБОРАТОРИЯЛЫҚ САБАҚТАРҒА АРНАЛҒАН ӘДІСТЕМЕЛІК НҰСҚАУДЫ ҚҰРАСТЫРҒАН ЖӘНЕ ЕНГІЗГЕН

 

Орындаушылар

Информатика және ЕТ кафедрасының _______________Нарбекова З.Т.

оқытушылары

«___»_________2011г.

 

Информатика және ЕТ кафедрасының _______________Маликова Г.К.

оқытушылары

«___»_________2011г.

 

 

Жауапты орындаушы

Информатика және ЕТ кафедрасының

меңгерушісі _________ Сарсимбаева С.М. «____»______________2011г.

 

II. КАФЕДРАНЫҢ ОҚУ-ӘДІСТЕМЕЛІК СЕКЦИЯСЫНЫҢ ОТЫРЫСЫНДА ТАЛҚЫЛАНДЫ

Хаттама № «» 2011 г.

 

 

II. РЕЦЕНЗЕНТ

_____________________________ __________ __________________

 

«_____»__________________2011г.

IV. ФИЗИКА-МАТЕМАТИКА ФАКУЛЬТЕТІ ӘДІСТЕМЕЛІК КОМИССИЯСЫНДА МАҚҰЛДАНҒАН

 

Хаттама № «» 20__ г.

 

V. АЛҒАШҚЫ ТЕКСЕРУ МЕРЗІМІ 20__ ж.

ҚАЙТАЛАП ТЕКСЕРУ МЕРЗІМІ 1 жыл

VI. АУЫСТЫРЫЛЫП ЕНГІЗІЛДІ ______________________

Алдыңғы жұмыс бағдарламасының бекітілген мерзімі

 

№1-4 лабораториялық жұмыс

Параллель программалау. С++ тілінің кеңеймесін қолдана отырып, параллель алгоритмдерге программалық код құру.

Жұмыстың мақсаты: Параллельді есептеулер, параллельді компьютерлер, параллельді программалау, сұрыптаудың параллельді алгоритмдері түсініктерімен танысу.

Материалдар және жабдықтар: ДК, параллельді есептеулер программалау ортасы, ПараЛаб программалау жүйесі.

Жұмыстың мазмұны және орындалу тәртібі:

Параллель компьютер дегеніміз – есепті сандық түрде шешіп, үйлесімді шешуге қабілетті процессорлардың жиынтығы.

Параллельді программа – бұл әр процесс өзінің меншікті процессорныда жүріп қана қоймай, параллель орындалатын программа.

Параллельді компьютерлер мен параллельді есептеулер қолданылатын облыстарға тоқталсақ:

- күрделі жүйені сандық модельдеуде: ауа-райын болжау, гендік инженерия, интегралдық схеманы жобалау, жаңалықтар, кезекті космосқа ұшырылу туралы жедел хабар, т.б.

- бизнесте, коммерциялық салада: видеоконференциялар, параллель мәліметтер қоры, банктік транзакция, т.б.

- техникада: медицина саласында, автоматты түрде диагноз қою, жер сілкінуді болжау, айналадағы ортаның ластануын анализдеу, дәрі-дәрмек препараттарын жасау, т.б.

- білім беру саласында: кеңейтілген графика және виртуальды әлем, әсіресе, компьютерлік ойындар құрастыру.

1. Салыстыру-және-алмастыру әдісімен сұрыптау.

Көптеген программаларда сұрыптау кезінде ағымдағы санды басқа санмен орны бойынша алмастыру мақсатында уақытша сақтау үшін базалық айнымалылар пайдаланылады. Ал, параллельді есептеулерде ол сандарды сақтап қоюға процессорларды пайдаланады.

if (A>B)

temp=A; A=B; B=temp;

2. Көпіршіктер әдісімен сұрыпау

(a1, a2,...,an) сандарының тізбегі берілсін. Сандарды өсу ретімен орналастыру керек, яғни i>j үшін ai<aj

Программа 1. «Көпіршіктер» әдісімен сұрыптаудың тізбекті алгоритмі.

Procedure BUBBLE-SORT(n)

Begin

3. for i:=n-1 downto 1 do

4. for j:=1 to i do

5. compare-exchange(aj,aj+1);

End BUBBLE-SORT

Бұл алгоритмде ішкі цикл итерациясы Q(n) уақытта орындалса және Q(n) итерация жасалса, «көпіршіктер» әдісімен сұрыптауға кететін уақыт - Q(n2). Бұл алгоритмді параллельділікке айналдыру үлкен қиындық келтіреді. Сондықтан бұл әдістің екінші бір түрі «тақ-жұп орын ауыстыру» алгоритмін қарастырайық.

3. «тақ-жұп орын ауыстыру» алгоритмі.

Бұл алгоритмде n элемент n фазада сұрыпталады. Бұл алгоритмнің жұп және тақ фазалары кезектестіріледі. (a1, a2,...,an) – тізбегін сұрыптау керек болсын. Тақ фаза кезінде тақ индексті элементтер оң жақтағы көрші элементпен салыстырылып, егер шарт орындалса, олар орындарын алмастырады, яғни (a1, а2), (a3, a4),..., (an-1,an) жұптары салыстырылып алмастырылады. Сол сияқты жұп фаза кезінде, жұп индексті элементтер салыстырлып, егер шарт орындалса, олар орындарын алмастырады, яғни (а2, a3), (a4, a5),..., (an-2,an-1) жұптары салыстырылып алмастырылады. Сонда тақ-жұп ауыстыру n фазасынан кейін тізбек сұрыпталады. Әрбір алгоритмнің фазасында Q(n) салыстыру жасалса, барлығы n фаза болса, бұл алгоримтнің (sequential complexity) - Q(n2).

Программа 2. "тақ-жұп орын ауыстыру" тізбекті алгоритмі.

Procedure ODD-EVEN(n)

Begin

3. for i:=1 to n do

Begin

If i is odd then

6. for j:=0 to n/2-1 do

7. compare-exchange(a2j+1,a2j+2)

If i is even then

9. for j:=1 to n/2-1 do

10. compare-exchange(a2j,a2j+1)

End for

End ODD-EVEN

-

 

Өз бетімен орындауға арналған тапсырмалардың нұсқалары:

1. Параллельді компьютерлердің және параллельді есептеулер қолданылатын облыстарды талдап, жазыңдар.

2. Программалар деңгейінің параллельділігіне мысал ретінде екі массив элементтерінің қосындысын тап.

3. Куб көлемі - 100х100х100 нүктелерден тұрады.Әрбір нүктеде орындалатын функциялар – жылдамдық, қысым, температура, компоненттің концентрациясы (су, газ, мұнай, т.б.). Барлығы 5-20 функция (орташа-10). Бұл функциялар сызықты емес. Сондықтан оларды есептеу үшін 200-1000 операция орындалу керек (орташа -500). Жүріп жатқан процестер стандартты емес, сондықтан қадамдар саны 100-1000 (орташа-500).

Сонда куб ішінде орындалатын арифметикалық операциялар санын есептеп тап.

4.Берілген сандар жиынының ең кіші k-сыншы ретті санды табатын параллельді программаны жазыңдар.

5.Тақ-жұп сұрыптаудың салыстыру-және-алмастыру тәсілін пайдаланып, төмендегі 16 санды сұрыптаңдар: 12 2 11 4 9 1 10 15 5 7 14 3 8 13 6 16.

6.Тақ-жұп сұрыптауды орындауға кететін уақыттың O(log2n)-ге тең екенін дәлелдеңдер.

 

Лабораториялық жұмыстың орындалуы туралы есебінің формасы:

1. Берілген есептердің қойылымын талдап, түсіндіру.

3. Берілген есептерді шешу алгоритмін түсіндіру.

4. Орындалған жұмыс жөнінде есеп беру.

Блиц тест.

1. Параллельді программалау тіліне жатпайды:
А) Бейсик;
В) Фортран;
С) OCCAM;
Д) OpenMP.

 

2. Параллельді компьютер дегеніміз:
А) есепті сандық түрде шешіп, бірігіп жұмыс істей алатын поцессорлар жиынтығы;
В) бүкіләлемдік компьютерлік жүйе;
С) локалды жүйе;
Д) республикалық компьютерлік жүйе.
  3.Компьютер өнімділігі (операциялардың орындалу жылдамдығы) мына шамаға тәуелді:
А) процессор жиілігіне;
В) монитор экранының мөлшеріне;
С) пернеге басу жылдамдығына;
Д) жүйелік блоктың өлшеміне.
  4. Параллельділіктің ең жоғарғы деңгейі:
А) тапсырма деңгейінің параллельділігі;
В) программа деңгейінің параллельділігі;
С) команда деңгейінің параллельділігі;
Д) арифметикалы-және биттік-туралау праллельділігі.

 

5. Параллельділіктің ең төменгі деңгейі:
А) арифметикалы-және биттік-туралау праллельділігі;
В) программа деңгейінің параллельділігі;
С) команда деңгейінің параллельділігі;
Д) тапсырма деңгейінің параллельділігі.

Бақылау сұрақтары.

1. Параллелді компьютер түсінігі. Параллель компьтерлерді қолдану облыстары және олардың даму бағыттары.

2. Параллельділік. Мәліметтер параллельдігі.

3. Параллельділік. Тапсырма деңгейінің паралельділігі.

4. Параллельділік. Программа деңгейінің параллельділігі.

5. Параллельділік. Командалар деңгейінің параллельділігі.

6. Параллелді компьютерлер типтері. Көппроцессорлы жүйе.

7. Параллельді компьютерлер типтері. Үлестірімді жадылы мультикомпьютерлер.

8. Параллельді программалық жабдықтау үшін қандай талаптар орындалу керек?

Глоссарий.

Параллельді компьютер – есепті сандық түрде шешіп, үйлесімді шешуге қабілетті процессорлардың жиынтығы.

Параллельді программа – бұл әр процесс өзінің меншікті процессорында жүріп қана қоймай, параллель орындалатын программа.

Тапсырма деңгейінің параллельділігі - параллельділіктің ең жоғарғы деңгейі. Бұл деңгейде орталық процессор мен енгізу-шығару жүйесі параллель жұмыс жасайды.

Программа деңгейінің параллельдігі - бір программа оны құраушы бөліктеріне бөлініп орындалатын процесс.

Командалар деңгейінің параллельдігі - бұл типті іске асыратын негізгі тәсіл –конвейерлер. Бұл жағдайда не жеке командалар қалқаланады, не берілген команда бағыныңқы операцияларға жіктеледі.

Арифметикалық және биттік туралау параллельдігі - параллельдігінің ең төменгі деңгейі. Бұл деңгей - орталық процессордағы арифметика-логикалық құрылғыға жатқызылады.

Программалау модельдері: п араллельді және тізбекті.

Көпшілік қолданарлық (общедоступный) көп процессорлы жүйе - көптеген процессордың жыйынынан тұрады, олар бір-бірімен жадының модульдер жиынымен өзара байланысты.

Әдебиеттер

1. А. Ж. Акжалова. Параллельные вычисления. Учебное пособие. – Алматы: Издательство ТОО «Print S»,- 2004

2. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с англ.-М.: Издательский дом «Вильямс», 2003.

3. Воеводин Вл. Параллельная обработка данных. Санкт-Петербург, 2002.

4. Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем. Санкт-Петербург, 2002.

№5-8 лабораториялық жұмыс

Тақырыбы: Программалау тілдерінің синхронизациясын қолдана отырып, есептерді шешу: блоктар/блоктан алу; критикалық секция; семафорлар.

Жұмыстың мақсаты: Семафорларды қолданып, параллель программалау құру

Материалдар және жабдықтар: ДК, параллельді есептеулерді программалау ортасы, ПараЛаб программалау жүйесі.

Жұмыстың мазмұны және орындалу тәртібі:

«Өндіруші - тұтынушы» типті синхронизация

Блоктау және кедергілер

Критикалық секция есебі

 

Өз бетімен орындауға арналған тапсырмалардың нұсқалары:

1. Сандар жиынының ең кіші kth номерін табу үшін параллель программа жазу. Тез сұрыптаудың параллель нұсқасын қолданыңыз, тек kth кіші номерден тұратын сандар жиынына хабарлаңыз.

2. Критикалық секция есебін талдаңыз.

 

Лабораториялық жұмыстың орындалуы туралы есебінің формасы:

1. «Өндіруші - тұтынушы» типті синхронизация есебін талдау.

2. Программасын С ++ тілінде жазу

3. Орындалған жқмыс жөнінде есеп беру.

Блиц тест.

1. Параллельді программалау тіліне жатпайды:
А) Бейсик;
В) Фортран;
С) OCCAM;
Д) OpenMP.

 

2. Параллельді компьютер дегеніміз:
А) есепті сандық түрде шешіп, бірігіп жұмыс істей алатын поцессорлар жиынтығы;
В) бүкіләлемдік компьютерлік жүйе;
С) локалды жүйе;
Д) республикалық компьютерлік жүйе.
  3.Компьютер өнімділігі (операциялардың орындалу жылдамдығы) мына шамаға тәуелді:
А) процессор жиілігіне;
В) монитор экранының мөлшеріне;
С) пернеге басу жылдамдығына;

 

 
 
 
 

Бақылау сұрақтары.

1. Синхронизация дегеніміз не?

2. Семафорлар дегеніміз не?

3. Мониторлар қай кезде қолданылады.

4. Блоктар мен кедергі дегеніміз не?

 

Глоссарий.

Параллельді компьютер – есепті сандық түрде шешіп, үйлесімді шешуге қабілетті процессорлардың жиынтығы.

Параллельді программа – бұл әр процесс өзінің меншікті процессорында жүріп қана қоймай, параллель орындалатын программа.

Жұмыстың қысқаша мазмұны:

Екі процес берілсін: Produser (өндіруші) және Consumer(тұтынушы). Produser процессі а[n] бүтін сандардың локальді массивінен тұрсын. Consumer – b[n] болсын. а массиві иннициялизацияланған болсын. Мақсат: оның мазмұнын b массивіне көшіру.

buf айнымалысы – өзараәсер ету буфері болып табылатын жеке бөлінетін бүтін айнымалылар.

Produser (өндіруші) және Consumer(тұтынушы) процесстері buf айнымалысына кезекпен кезек ене алады. Produser а массивінің бірінші элементін buf –ке салып, сонан соң Consumer оны алады, сонан соң Produser buf буферіне а массивінің келесі элементін салады, және т.с.с. р және с бөлінетін айнымалылыар айнымалылар санының санағышы болсын. Олардың бастапқы мәні =0. Сонда Produser (өндіруші) және Consumer(тұтынушы) процесстерінің синхронизацилану шарты төменгі түрде жазылады:

РС: c<=p<=c+1

с және р айнымалыларының мәні 1 ден артық мәнге айырмашылығы болмайды. Осы екі процесстің коды төменде берілген:

 

int buf, p=0, c=0;

process Procedur

{

Int a[n];

While (p<n)

{ <await (p==c); >

buf =a[p];

p=p+1;

}

}

 

Process Consumer

{

Int b[n];

While (c<n)

{ <await (p>c); >

b[c]=buf;

c=c+1;

}

}

 

 

Әдебиеттер

1. А. Ж. Акжалова. Параллельные вычисления. Учебное пособие. – Алматы: Издательство ТОО «Print S»,- 2004

2. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с англ.-М.: Издательский дом «Вильямс», 2003.

3. Воеводин Вл. Параллельная обработка данных. Санкт-Петербург, 2002.

4. Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем. Санкт-Петербург, 2002.

№9,10 лабораториялық жұмыс

Ағындарды қолданып, Linux- те программалар құру.

Жұмыстың мақсаты: Linux операциялық жүйесінде ағындарды қолдану

Материалдар және жабдықтар: ДК, параллельді есептеулерді программалау ортасы, Linux операциялық жүйесі.

Жұмыстың мазмұны және орындалу тәртібі:

 

 

Өз бетімен орындауға арналған тапсырмалардың нұсқалары:

1. Linux операциялық жүйесінің ерекшеліктері талдау

2. Ағындар. Ағындар түрлерін қарастыру

 

Лабораториялық жұмыстың орындалуы туралы есебінің формасы:

1. Linux операциялық жүйесіндегі ағындар туралы конспекті жазып, түсіндіру.

2. Орындалған жұмыс жөнінде есеп беру.

Лабоаториялық жұмыстың мазмұны:

Ағындарды құру үшін pthread кітапханасы қолданылып, pthread_create функциясы шақырылады, осы кітапханада синхронизациялау үшін арнайы объектілер – мутекс тер сипатталған.

/*sem.h*/

#include <sys/types.h>

#include <unistd.h>

#include <errno.h>

 

// semafore

#include <ctype.h>

#include <stdlib.h>

#include <sys/ipc.h>

#include <sys/sem.h>

 

/*

* В моей системе данное объединение не объявлено в подключенных файлах -

* если компилятор напишет что оно ранее объявлено - просто сотрите:)

*/

union semun {

int val; /* Value for SETVAL */

struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */

unsigned short *array; /* Array for GETALL, SETALL */

struct seminfo *__buf; /* Buffer for IPC_INFO

(Linux specific) */

};

 

class sem

{

private:

int sid; // идентификатор семафора

key_t key; // ключ по которому получаем идентификатор

int res_count; // количество ресурсов у семафора

public:

/*

* кол-во ресурсов

* некое случайное число

* путь в системе - обязательно должен существовать!

*/

sem(int max_res, int id, const char* identify);

/*

* деструктор - тут удаляем семафор, иначе он останется до

* следующей перезагрузки системы или пока его кто-то явно не удалит

*/

~sem();

/*

* обертки для занятия/освобождения ресурсов

*/

bool lock(int res);

bool unlock(int res);

};

 

typedef sem* psem;

 

;

 

Cледующий файл:

 

/*sem.cpp*/

#include "sem.h"

 

sem::sem(int max_res, int id, const char* identify)

{

sid = -1;

res_count = 0;

/*

* получаем ключ для семафора

*/

if ((key = ftok(identify,id)) == -1)

{

return;

}

 

/*

* 0666 - rw для всех, чтобы потом можно было обратиться к семафору

* от любого пользователя системы, в общем то личное дело каждого

* сначала пытаемся открыть имеющийся семафор с таким ключом - и

* удалить его, старый нам ни к чему

*/

if ((sid = semget(key, 0, 0666))!= -1)

{

if (semctl(sid, 0, IPC_RMID, 0) == -1)

{

sid = 0;

}

}

 

if (sid!= 0) // проверяем что семафор был найден и удален или не существовал

{

/*

* создаем с флагом IPC_EXCL - означает что в случае если семафор уже

* имеется - вызов будет провален c значением EEXIST,

* без возврата значения отрытого уже существующего семафора

*/

if ((sid = semget(key, 1, IPC_CREAT | IPC_EXCL | 0666))!= -1) //

{

union semun semopts;

semopts.val = max_res;

semctl(sid, 0, SETVAL, semopts);

res_count = max_res;

}

} else sid = -1;

}

 

sem::~sem()

{

if (sid!= -1)

{

semctl(sid, 0, IPC_RMID, 0);

}

}

 

bool sem::lock(int res)

{

/*

* отсекаем неверные запросы сразу, не используя обращения к структурам семафора

*/

if ((res > res_count) || (sid == -1))

{

return false;

}

/*

* параметры в структуре

* 0 - номер семафора

* количество ресурсов - если захватываем, должно быть отрицательным

* 0 - ждать если на данный момент нет достаточного

* количества ресурсов или IPC_NOWAIT - возвращать ошибку

*/

struct sembuf sem_lock={0,(-1)*res,0};

/*

* параметры запроса

* - идентификатор семафора

* - структура которую заполняли выше - ее адрес

* - сколько раз выполнить операцию

*/

if ((semop(sid, &sem_lock, 1)) == -1)

{

return false;

}

return true;

}

 

bool sem::unlock(int res)

{

/*

* аналогично функции lock

*/

if ((res > res_count) || (sid == -1))

{

return false;

}

struct sembuf sem_unlock= { 0, res, IPC_NOWAIT};

if ((semop(sid, &sem_unlock, 1)) == -1)

{

return false;

}

return true;

}

 

Блиц тест.

1. Параллельді программалау тіліне жатпайды:  
А) Бейсик;  
В) Фортран;  
С) OCCAM;  
Д) OpenMP.  
   

 

2. Параллельді компьютер дегеніміз:
А) есепті сандық түрде шешіп, бірігіп жұмыс істей алатын поцессорлар жиынтығы;
В) бүкіләлемдік компьютерлік жүйе;
С) локалды жүйе;
Д) республикалық компьютерлік жүйе.
  3.Компьютер өнімділігі (операциялардың орындалу жылдамдығы) мына шамаға тәуелді:
А) процессор жиілігіне;
В) монитор экранының мөлшеріне;
С) пернеге басу жылдамдығына;

Бақылау сұрақтары.

1. Linux операциялық жүйесі мен Windows операциялық жүйесінің айырмашылығы

2. Неліктен ағындарды Linux операциялық жүйесінде құрады.

Глоссарий.

Параллельді компьютер – есепті сандық түрде шешіп, үйлесімді шешуге қабілетті процессорлардың жиынтығы.

Параллельді программа – бұл әр процесс өзінің меншікті процессорында жүріп қана қоймай, параллель орындалатын программа.

Әдебиеттер

1. А. Ж. Акжалова. Параллельные вычисления. Учебное пособие. – Алматы: Издательство ТОО «Print S»,- 2004

2. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с англ.-М.: Издательский дом «Вильямс», 2003.

3. Воеводин Вл. Параллельная обработка данных. Санкт-Петербург, 2002.

4. Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем. Санкт-Петербург, 2002.

№11-12 лабораториялық жұмыс

Хабарламаларды беруді программалау

Жұмыстың мақсаты: MPI - параллельді программалау құралымен жұмыс жасау принципімен танысу.

Материалдар және жабдықтар: ДК, параллельді есептеулер программалау ортасы, MPI кітапханасы.

Жұмыстың мазмұны және орындалу тәртібі:

 

1. MPI_Send және MPI_Recv процедураларын қарастырайық:

 

int MPI_Send (void* buf, int count,

MPI_Datatype dataType,

int dest, int tag,

MPI_Comm_comm)

 

Мұндағы: buf - буфер адресінің басы;

count – міндетті түрде жіберілетін элементтер саны;

dataType – әрбір элементтің типі, мысалы: MPI_INT, MPI_DOUBLE, MPI_CHAR, және т.с.с.;

dest - адресат рангісі (процесс идентификаторы);

tag – хабарлама тэгі;

comm - коммуникатор.

 

int MPI_Recv (void* buf, int count,

MPI_Datatype dataType, int source, int tag,

MPI_Comm comm, MPI_Status* status)

 

Мұндағы: status – кері қайту жағдайын қайтарады,

source – MPI_Send процедурасындағыдай берілу идентификаторы.

 

MPI программасында белгілі бір ережелерді қатаң сақтау керек, онсыз жұмыс жүруі мүмкін емес. Алдымен, программының басталуында, оның тақырыбынан кейін сәйкес тақырыптық файлды іске қосу керек. С тіліндегі программада бұл - mpi.h. Программада MPI кітапханалық процедурасының алғашқы шақырылымы MPI_Init инициализациясының ішкі программасын шақыру болып табылады. С тілінде инициализация функциясының параметрі негізгі программа қосылған жағдайда оның аргументінің адресін алады: MPI_Init(&argc, &argv);

_

2. MPI кітапханасының көмегімен екі процесс арасындағы мәндермен алмасу программасын қарастырайық:

#include <mpi.h>

#include <mpi.h>

 

Main(int argc, char *argv[])

{int myid, otherid, size;

Int length=1, tag=1;

Int myvalue, othervalue;

MPI_Status status;

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &size);

MPI_Comm_rank(MPI_COMM_WORLD, &myid);

if (myid==0) (otherid=1; myvalue=14;}

else

{otherid=0; myvalue=25;}

MPI_Send(&myvalue, length, MPI_INT, otherid,

tag, MPI COMM_WORLD, &status);

MPI_Recv(&othervalue, length, MPI_INT, MPI_ANY_SOURCE,

tag, MPI COMM_WORLD, &status);

printf("npoцecc номер %d алынды %d\n", myid, othervalue);

MPl_Finalize();}

 

 

3. Әрбіреуі стандартты құрылғыға процесс номерін және іске қосылған процесстердің саны туралы хабарлама шығаратын бірнеше поцессті іске қосатын қарапайым программаны келтірейік:

 

#include <mpi.h>

#include <stdio.h>

int main(int argc,char *argv[])

{

int myid, numprocs;

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

MPI_Comm_rank(MPI_COMM_WORLD, &myid);

printf(stdout,"Process %d of %d\n", myid, numprocs)

MPI_Finalize();

return 0;

}

 

4. Келесі программа жұп және тақ рангілі процесстер арасындағы хабарламалар алмасуға мысал болады, size мәні жұп болсын делік:

#include <mpi.h>

#include <stdio.h>

int main(int argc,char *argv[])

{

int myrank, size, message;

int TAG = 0;

MPI_Status status;

MPI_ Init(&argc, &argv);

MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

MPl_Comm_size(MPI_COMM_WORLD, &size);

message=myrank; if((myrank%2)-0)

{

If((myrank+1)1-size)

MPI

{

if((myrank+ 1)1- size)

 

MPI_Send(&message, 1, MPI_INT, myrank+1, TAG,

MPI_COMM_WORLD); else {if (myrank!- 0)


{ MPI__Recv(&message, 1, MPI_INT, myrank-1, TAG, MPI_COMM_WORLD, &status);

printf("I am %i received:%i \n", rank, message);

return 0;

}

 

Өз бетімен орындауға арналған тапсырмалардың нұсқалары:

1. MPI программасын қондыру және күйін келтіру.

2. Процессорлардың жалпы санын анықтау (MPI_Comm_Size).

3. Процесстердің жеке номерін анықтау (MPI_Comm_Rank).

4. “Нүкте-Нүкте” типті блокталынған коммуникациялық функция көмегімен мәліметті жіберуді ұйымдастыру (MPI_Send, MPI_Recv).

5. Бірмезгілде мәліметті жіберуді ұйымдастыру (MPI_Sendrecv)

 

Лабораториялық жұмыстың орындалуы туралы есебінің формасы:

1. Берілген есептердің қойылымын талдау, қолданылатын процедураны түсіндіру.

2. Берілген есептерді шешудің параллельді алгоритмін түсіндіру.

3. Орындалған жұмыстың программасын ЭЕМ –де көрсетіп, есебін рәсімдеп, тапсыру.

Блиц-тест:

1. MPI_Comm_size сұранысының қызметі:
А) процесстер санын анықтайды;
В) процесс рангісін анықтайды;
С) MPI кітапханасын инициализациялайды;
Д) басқа процеске хабарлама жібереді.  
2. MPI_Comm_rank сұранысының қызметі:
А) процесстер санын анықтайды;
В) процесс рангісін анықтайды;
С) MPI кітапханасын инициализациялайды;
Д) басқа процеске хабарлама жібереді.  
3. MPI_Init сұранысының қызметі:
А) процесстер санын анықтайды;
В) процесс рангісін анықтайды;
С) MPI кітапханасын инициализациялайды;
Д) басқа процеске хабарлама жібереді.  
4. MPI_Send сұранысының қызметі:
А) процесстер санын анықтайды;
В) процесс рангісін анықтайды;
С) MPI кітапханасын инициализациялайды;
Д) басқа процеске хабарлама жібереді.  
5. MPI_Recv сұранысының қызметі:
А) басқа процесстен хабарлама алады;
В) процесс рангісін анықтайды;
С) MPI кітапханасын инициализациялайды;
Д) басқа процеске хабарлама жібереді.

Бақылау сұрақтары.

9. Хабарламаларды беруді программалауды түсіндір.

10. MPI (Message Passing Interface) программалау құралы не үшін қажет?

11. MPI функционалдық сұраныстарын ата.

12. MPI_Send процедурасын түсіндір.

13. MPI_Recv процедурасын түсіндір.

Глоссарий.

MPI(Message Passing Interface) – хабарламаларды беру интерфейсі.

MPI_Send – хабарламаның блокталынып берілуі.

MPI_Recv – хабарламаның блокталынып алынуы.

MPI_Comm_size - процесстер санын анықтайды.

MPI_Comm_rank – процесстер рангісін анықтайды.

 

Әдебиеттер

5. А. Ж. Акжалова. Параллельные вычисления. Учебное пособие. – Алматы: Издательство ТОО «Print S»,- 2004

6. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с англ.-М.: Издательский дом «Вильямс», 2003.

7. Воеводин Вл. Параллельная обработка данных. Санкт-Петербург, 2002.

8. Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем. Санкт-Петербург, 2002.

№ 13-15 лабораториялық жұмыс

PVM-де жұмыс. Ағындарды құру және PVM-де мәліметтерді параллель өңдеу.

Жұмыстың мақсаты: PVM - параллельді виртуальді машинасының жұмыс жасау принципімен танысу, хабарламаларды беру және процессті синхронизациялауға арналған кітапханалармен жұмыс жасау.

Материалдар және жабдықтар: ДК, параллельді есептеулер программалау ортасы, PVM кітапханасы.

Жұмыстың мазмұны және орындалу тәртібі:

1. PVM жүйесін қондыру (1-әдіс).

Linux ОЖ-мен жұмыс жасайтын компьютерге PVM жүйесін қондыру үшін бума құру керек, мысалы /pvm3 бумасы құрылсын. Осы бумада tar zxvf pvm3.3.4.tgz архивтелген файлын ашу керек. PVM қосылу үшін $PVM_ROOT айнымалысына буманың жолын көрсету керек. Командалық қабықша ретінде csh қолданылса, .cshrc файлына келесі командалық жолды қосу керек:

setenv PVM_ROOT=/pvm3

Егер командалық қабықша ретінде sh немесе ksh қолданылса, онда.profile файлына келесі командалық жолды қосу керек:

export PVM_ROOT=/pvm3

2-әдіс. pvm_spawn() функциясы үшін орындалатын файл қатаң түрде бумада сақталынады. Linux ОЖ-де мына каталогтар пайдаланылады: $PVM_ROOT/bin/$PVM ARCH/ және $HOME/pvm3/bin/$PVM_ ARCH, PVM_ROOT/ usr/local/pvm/current

PVM-де орындалу үшін aimk қолданылады, сонда master және slave компиляцияланады және байланысады.

PVM-ді іске қосу үшін pvmd.exe –даемонды пайдалану керек. Жаңа компьютерлер қосу керек: addhost <хост аты>. Тапсырманы орындау үшін spawn-> <hostcode> командасы орындалады (консольдық режим). PVM-ді тоқтату exit командасының көмегімен жүзеге асады.

PVM іске қосу үшін, әрі қарай make командасы орындалады да, PVM жүйесінде жұмысты бастауға болады.

PVM-де есептерді басқару белгілі бір функциялар негізінде жүргізіледі. Алдымен, call pvmfmytid(tid) функциясы шақырылады, ол идентификатор мәнін tid >= 0 қайтарады.

Әрі қарай есептің қалған бөлімдері басқа процессорларда орындалады. Ол мына функциялардың көмегімен іске асады:

call pvmfspawn(task, flag, where, ntask, tids, numt) task - орындалатын файл аты; INTEGER flag - іске қосу опциясы; where - іске қосылатын орын; INTEGER ntask – орындалатын программалар саны; INTEGER tids - мәндер массиві.

call pvmfkill(tid, info)- tid идентификаторымен жұмысты аяқтайды.
call pvmfexit(info) - PVM жұмысын аяқтайды.

Хабарлама жіберерден бұрын оны мына функциялар көмегімен буферге орналастыру керек:

pvm_initsend (int encoding) – үнсіз келісім бойынша инициализациялайды;

pvmrnkbuf (int encoding) – хабарламаны орналастыратын жаңа буфер құрып, идентификаторды қайтарады;

pvm_setsbuf (int bufid) – ағымдағы буферді хабарлама жіберуге дайындайды;

tid – хабарлама жіберетін есеп идентификаторы;

msgtag – осы хабарлама тэгі;

startAddress – бірінші бүтін сан адресі;

nlnts – бүтін сандар саны;

 

Өз бетімен орындауға арналған тапсырмалардың нұсқалары:

1. PVM-ді қондыру және күйін келтіру.

2. Кластердің коммуникациялық ортасын тестілеу.

3. Кластердің өнімділігін тестілеу.

4. PVM –де мәліметті жіберуді ұйымдастыру.

5. Тағайындалған процесске хабарламаның асинхронды берілуі.

 

Лабораториялық жұмыстың орындалуы туралы есебінің формасы:

1. Берілген есептердің қойылымын талдау, қолданылатын процедураны түсіндіру.

2. Берілген есептерді шешудің параллельді алгоритмін түсіндіру.

3. Орындалған жұмыстың программасын ЭЕМ –де көрсетіп, есебін рәсімдеп, тапсыру

Блиц-тест:

1. хабарлама жіберетін есеп идентификаторы:
A) tid;
B) msgtag;
C) startAddress;
D) nlnts
2. Бірінші бүтін сан адресі:
A) tid;
B) msgtag;
C) startAddress;
D) nlnts
3. Хабарлама тэгі:
A) tid;
B) msgtag;
C) startAddress;
D) nlnts
4. PVM _Send сұранысының қызметі:
А) бүтін сандарды жинау;
В) тағайындалған процесске хабарламаның асинхронды берілуі;
С) жиналған бүтін сандарды қайта ашу;
Д) тағайындалған процесске хабарламаның берілуі.  
5. PVM _mcast сұранысының қызметі:
А) бүтін сандарды жинау;
В) тағайындалған процесске хабарламаның асинхронды берілуі;
С) жиналған бүтін сандарды қайта ашу;
Д) тағайындалған процесске хабарламаның берілуі.  

Бақылау сұрақтары.

1. Хабарламаларды беруді программалауды түсіндір.

2. PVM параллельді виртуальды машина не үшін қажет?

3. PVM функционалдық сұраныстарын ата.

4. PVM _Send процедурасын түсіндір.

5. PVM _Recv процедурасын түсіндір.

Глоссарий.

PVM параллельді виртуальды машина.

PVM _Send – тағайындалған процесске хабарламаның асинхронды берілуі

PVM _Recv – блоктап алау.

PVM_pkint – бүтін сандарды жинау.

PVM_upkint – жиналған бүтін сандарды қайта ашу.

 

Әдебиеттер

1. А. Ж. Акжалова. Параллельные вычисления. Учебное пособие. – Алматы: Издательство ТОО «Print S»,- 2004

2. Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с англ.-М.: Издательский дом «Вильямс», 2003.

3. Воеводин Вл. Параллельная обработка данных. Санкт-Петербург, 2002.

4. Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем. Санкт-Петербург, 2002.

 

«Параллельдік есептеулер»

пәнін оқытуға әдістемелік ұсыныстар

«Параллельдік есептеулер» пәнін терең меңгеру үшін

 

студент міндетті:

 

1. Дәрістер курсын тыңдау

 

1.1 Кіріспе. Параллель компьютерлерге сұраныс. Параллель компьютерлердің даму кезеңі. Параллель программалау бағыттарының дамуы. Параллель программалаудың қолданылу облыстары.

1.2 Параллельділік. Программалаудың екі моделі: тізбектелген және параллель. Мәліметтердің параллельділігі және есптердің параллельділігі. Программалаудың параллель модельдері.

1.3 Параллельді компьютерлер. Тезорындалуын арттыруға арналған техникалық қамсыздандыру. Параллель компьютерлер түрлері. Ортақ жадылы (бөлінетін жадылы) көппроцессорлы жүйелер. Хатты беру мультикомпьютері немесе үлестірілімді жадылы компьютерлер. Флинн таксономиясы. Жаңа таксономияны құру тәсілдері.

1.4 Параллель программалауды тиімді бағалау. Орындалу уақыты, детализациялану деңгейі, үдеу коэффициенті, құны, тиімділігі. Амдал заңы, Густафсон заңы.

1.5 Процесстер мен синхронизациялану. Күйі, іс-әрекеті, тарихы және қасиеттері. Бөлінбейтін әрекеттер және күту операторлары. Синхронизацияны беру: күту операторлары. «Сұраныс беруші-тұтынушы» түріндегі синхронизация. Блоктау және кедергі.Критикалық секция есебі. Аппаратты деңгейдегі синхронизациялану. Семафорлар. Мониторлар. Программалау тілінің синхронизациясы. Хабарламаларды беру синхронизациясы.

1.6 Параллельді алгоритмдер. Параллель алгоритмдерді құру: декомпозиция, коммуникацияны жобалау, ірілендіру. Есептеулерді жоспарлау. Ранг әдісімен сұрыптау. Салыстыру- және – алмастыру. Мәліметтерді бөлу. Пузырек әдісімен сұрыптау және жұп- тақ қоюлар арқылы сұрыптау. ShellSort. Біріктіріп сұрыптау. Тез сұрыптау. Параллельдеудің сандық әдістері. Матрицаларды көбейту. Сұрыптау алгоритмдері. Сандық әдістерді параллельдеу: сызықты алгебралық теңдеулер жүйесін шешу. Тура және итерациялау әдістері.

1.7 Параллель программалау. Ағындар және мәліметтерді өңдеу. Параллель программалау тілдері: HPF және C++ тілінің кеңеймелері, Fortran 90. PVM, MPI, Open MP қолданып, үлестірілген мәліметтерге енуді құру.

1.8 Ғылыми есептерді шешудің параллель алгоритмдерінің қосымшалары.

1.9 Кескіндерді өңдеу. Төменгі, ортаңғы және жоғарғы деңгейлерде кескіндерді өңдеу түрлері. Fourier түрлендіруі және Fourier алгоритмдері.

 

2. Өзіндік жұмыстарға арналған тақырыптарды меңгеру

 

Тақырып атауы Сағ.саны СӨЖ бақылау түрі СӨЖ тапсыру графигі
  Матрицаның барлық өзінің мәндерін табудың параллель алгоритмі   Хабарлама дайындау 1 апта
  Сұрыптаудың параллель әдістері   Конспект дайындау 1 апта
  Графтардағы параллель әдістер   Конспект дайындау, тестілік тапсырма орындау. 2 апта
  Созылмалы сығылмайтын сұйықта фильтрлеу есептерін шешуді тор әдісімен параллельдеу     Хабарлама дайындау 2 апта
  Жеке көбейткіштерде дифференциал теңдеулерді шешудің параллель әдістері.   Конспект дайындау 3 апта
  Матрицаны векторге көбейтудің параллель әдістері   Хабарлама дайындау 3 апта
  Електен өткізудің үш өлшемді есептерін шешуде есептеулерді үлестіру.   Хабарлама дайындау 4 апта
  Сызықты теңдеулер жүйесін шешу   Конспект дайындау, тестілік тапсырмаларды орындау. 4 апта
  Соңғы автоматтаресебінде параллельдеу.   Хабарлама дайындау 5 апта
  Параллель әдістерді өңдеу есептері   Есептер шығару 5 апта

 

Келесі тақырыптар бойынша конспект жасау:

Тақырып 1. Параллельдік есептеу жүйесінің құрылу принциптері.

Тақырып 2. Параллельдік алгоритмдердің коммуникациялық еңбек өнімділігін бағалау.

Тақырып 3. Параллельдік әдістерді өңдеу принциптері.

Тақырып 4. Параллельдік есептеулерді зерттеу әдістеріне арналған ПараЛаб жүйесі туралы.

Тақырып 5. Кестелік есептеулер, бөлшектер әдісі, матрицалық есептеулер.

 

1. Жобалар тақырыптары:

1. Матрицаны векторге көбейтудің параллель әдістері

2. Матрицаның барлық нақты мәндерін табудағы параллель алгоритм.

3. Сығылмайтын жабысқақ сұйықтықты фильтрлеу есептерінде торлар әдісімен параллельдеу.

4. Фильтрлеудің үшөлшемді есептеулерінің Ақырлы автоматтар есебінде параллельдеу.

 

Үй жұмысының тапсырмалары

Тапсырма

Берілген тесттің дұрыс жауаптарын табу

 

1. Параллельді программалау тіліне жатпайды:
А) Бейсик;
В) Фортран;
С) OCCAM;
Д) OpenMP.

 

2. Параллельді компьютер дегеніміз:
А) есепті сандық түрде шешіп, бірігіп жұмыс істей алатын поцессорлар жиынтығы;
В) бүкіләлемдік компьютерлік жүйе;
С) локалды жүйе;
Д) республикалық компьютерлік жүйе.
  3.Компьютер өнімділігі (операциялардың орындалу жылдамдығы) мына шамаға тәуелді:
А) процессор жиілігіне;
В) монитор экранының мөлшеріне;
С) пернеге басу жылдамдығына;
Д) жүйелік блоктың өлшеміне.
  4. Параллельділіктің ең жоғарғы деңгейі:
А) тапсырма деңгейінің параллельділігі;
В) программа деңгейінің параллельділігі;
С) команда деңгейінің параллельділігі;
Д) арифметикалы-және биттік-туралау праллельділігі.

 

5. Параллельділіктің ең төменгі деңгейі:
А) арифметикалы-және биттік-туралау праллельділігі;
В) программа деңгейінің параллельділігі;
С) команда деңгейінің параллельділігі;
Д) тапсырма деңгейінің параллельділігі.

 


Дата добавления: 2015-10-29; просмотров: 364 | Нарушение авторских прав


Читайте в этой же книге: Жауапты орындаушы | Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002 -600с. | Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002 |
<== предыдущая страница | следующая страница ==>
Флинн таксономиясы.| To be fond of smth / smb / doing smth

mybiblioteka.su - 2015-2024 год. (0.188 сек.)