- •Қазақстан респудликасы білім және ғылым министрлігі қ.Жұбанов атындағы ақтөбе мемлекеттік университеті
- •050602 - «Информатика»
- •4 Курс студенттеріне арналған «Параллельдік есептеулер» пәнінен
- •V. Алғашқы тексеру мерзімі 2012 ж. Қайталап тексеру мерзімі 1 жыл
- •II. Кафедра отырысында талқыланды
- •Тексеру мерзімділігі 1 жыл
- •VI. Ауыстырылып енгізілді _________________________________________
- •Бақылау-өлшеу материалдары үлгілері
- •Келісу парағы оқу пәнінің жұмыс бағдарламасы
- •050602 «Информатика» мамандығы үшін «Параллельдік есептеулер» пәні бойынша құрастырған жұмыс бағдарламасына
- •«Параллельдік есептеулер» пәні бойынша
- •050602-Информатика мамандығының 4 – курс студенттеріне арналған силлабус
- •2 Семестр 2010-2011 оқу жылы
- •Өзіндік жұмыс тапсырмалары
- •1. Жұмыс түрлері:
- •2. Жұмыс түрлерін бағалау критериилері:
- •Информатика және ет пәнінің оқу-әдістемелік қамсыздандырылу картасы
- •Дәрістер жинағы
- •Орындаушылар
- •Жауапты орындаушы
- •II. Кафедраның оқу-әдістемелік секциясының отырысында талқыланды
- •Рецензент
- •IV. Физика-математика факультеті әдістемелік комиссиясында мақұлданған
- •V. Алғашқы тексеру мерзімі 20__ ж. Қайталап тексеру мерзімі 1 жыл
- •VI. Ауыстырылып енгізілді ______________________
- •2.Параллель компьютерлерге сұраныс және параллель программалаудың даму кезеңдері
- •Параллельділік.
- •Программалау модельдері.
- •Есептеуіш жүйелер процессорларының мәлімет алмасу желісінің топологиясы.
- •Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002 -600с.
- •Грегори р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. С. Англ. –м.: Издательский дом «Вильямс», 2003. – 512с.
- •Акжалова а.Ж. Параллельные вычисления (учебное пособие). – Алматы, 2004
- •Тақырыбы: Параллельді алгоритмдер. Сұрыптаулар (ранг, көпіршіктер әдістері).
- •Программа 1. «Көпіршіктер» әдісімен сұрыптаудың тізбекті алгоритмі.
- •Программа 2. "тақ-жұп орын ауыстыру" тізбекті алгоритмі.
- •Программа 3. N-процессорлы сақинада орындалатын "тақ-жұр орын ауыстыру" тәсілінің параллельді алгоритмі.
- •Параллельді әдіске қысқаша сипаттама
- •2. Тізбектелген коды:
- •Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002
- •Грегори р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. С. Англ. –м.: Издательский дом «Вильямс», 2003.
- •Воеводин Вл. Параллельные вычисления. Санкт-Петербург, 2002
- •Грегори р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. С. Англ. –м.: Издательский дом «Вильямс», 2003.
- •Орындаушылар
- •Жауапты орындаушы
- •II. Кафедраның оқу-әдістемелік секциясының отырысында талқыланды
- •Рецензент
- •IV. Физика-математика факультеті әдістемелік комиссиясында мақұлданған
- •V. Алғашқы тексеру мерзімі 20__ ж. Қайталап тексеру мерзімі 1 жыл
- •VI. Ауыстырылып енгізілді ______________________
- •Программа 1. «Көпіршіктер» әдісімен сұрыптаудың тізбекті алгоритмі.
- •Программа 2. "тақ-жұп орын ауыстыру" тізбекті алгоритмі.
- •Ағындарды қолданып, Linux- те программалар құру.
- •Хабарламаларды беруді программалау
- •Pvm жүйесін қондыру (1-әдіс).
- •«Параллельдік есептеулер» пәнін оқытуға әдістемелік ұсыныстар «Параллельдік есептеулер» пәнін терең меңгеру үшін
- •Дәрістер курсын тыңдау
- •Өзіндік жұмыстарға арналған тақырыптарды меңгеру
- •3. Лабораториялық жұмыстарды орындау
- •3.3. Ағындарды қолданып, Linux- те программалар құру.
- •3.4. Хабарламаларды беруді программалау (mpi).
- •Лабораториялық жұмыстарды тапсыруға дайындалу
- •4.2 Программалау тілдерінің синхронизациясын қолдана отырып, есептерді шешу: блоктар/блоктан алу; критикалық секция; семафорлар.
- •Аралық бақылауды тапсыруға дайындалу
- •6. Емтиханға дайындалу
- •Өзіндік жұмыс тапсырмалары
- •Студенттердің оқу жетістіктерін бақылау және бағалау материалдары
- •Бақылау сұрақтары
- •Мультимедиялық программалар
- •Оқу пәнінің оқу-әдістемелік кешені
Хабарламаларды беруді программалау
Жұмыстың мақсаты: MPI - параллельді программалау құралымен жұмыс жасау принципімен танысу.
Материалдар және жабдықтар: ДК, параллельді есептеулер программалау ортасы, MPI кітапханасы.
Жұмыстың мазмұны және орындалу тәртібі:
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);
_
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();}
Әрбіреуі стандартты құрылғыға процесс номерін және іске қосылған процесстердің саны туралы хабарлама шығаратын бірнеше поцессті іске қосатын қарапайым программаны келтірейік:
#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;
}
Келесі программа жұп және тақ рангілі процесстер арасындағы хабарламалар алмасуға мысал болады, 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;
}
Өз бетімен орындауға арналған тапсырмалардың нұсқалары:
MPI программасын қондыру және күйін келтіру.
Процессорлардың жалпы санын анықтау (MPI_Comm_Size).
Процесстердің жеке номерін анықтау (MPI_Comm_Rank).
“Нүкте-Нүкте” типті блокталынған коммуникациялық функция көмегімен мәліметті жіберуді ұйымдастыру (MPI_Send, MPI_Recv).
Бірмезгілде мәліметті жіберуді ұйымдастыру (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 кітапханасын инициализациялайды; |
Д) басқа процеске хабарлама жібереді. |
Бақылау сұрақтары.
Хабарламаларды беруді программалауды түсіндір.
MPI (Message Passing Interface ) программалау құралы не үшін қажет?
MPI функционалдық сұраныстарын ата.
MPI_Send процедурасын түсіндір.
MPI_Recv процедурасын түсіндір.
Глоссарий.
MPI(Message Passing Interface ) – хабарламаларды беру интерфейсі.
MPI_Send – хабарламаның блокталынып берілуі.
MPI_Recv – хабарламаның блокталынып алынуы.
MPI_Comm_size - процесстер санын анықтайды.
MPI_Comm_rank – процесстер рангісін анықтайды.
Әдебиеттер
А. Ж. Акжалова. Параллельные вычисления. Учебное пособие. – Алматы: Издательство ТОО «Print S»,- 2004
Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования. Пер. с англ.-М.: Издательский дом «Вильямс», 2003.
Воеводин Вл. Параллельная обработка данных. Санкт-Петербург, 2002.
Немнюгин С.А., Стесик О.Л. Параллельное программирование для высокопроизводительных многопроцессорных систем. Санкт-Петербург, 2002.
№ 13-15 лабораториялық жұмыс
PVM-де жұмыс. Ағындарды құру және PVM-де мәліметтерді параллель өңдеу.
Жұмыстың мақсаты: PVM - параллельді виртуальді машинасының жұмыс жасау принципімен танысу, хабарламаларды беру және процессті синхронизациялауға арналған кітапханалармен жұмыс жасау.
Материалдар және жабдықтар: ДК, параллельді есептеулер программалау ортасы, PVM кітапханасы.
Жұмыстың мазмұны және орындалу тәртібі:
