Файл: Реферат Таырыбы Параллельді программалау тілдері Орындаан мірбеков Азамат Топ вт101 Семей аласы 2023жыл.docx

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 11.12.2023

Просмотров: 32

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Alikhan Bokeikhan University 

Реферат

Тақырыбы: Параллельді программалау тілдері


Орындаған: Өмірбеков Азамат

Топ:ВТ-101
Семей қаласы 2023жыл

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

Параллельді есептеулерді жүзеге асырудың әртүрлі тәсілдері бар. Мысалы, әрбір есептеу процесі операциялық жүйе процесі ретінде жүзеге асырылуы мүмкін немесе есептеу процестері бір ОЖ процесі ішіндегі орындау ағындарының жиынтығы болуы мүмкін. Параллельді бағдарламалар физикалық түрде бір процессорда ретімен орындалуы мүмкін - кезегімен әрбір есептеу процесінің орындалу қадамдарын ауыстыра отырып немесе параллельді түрде - әрбір есептеу процесіне бір немесе бірнеше процессорларды (жақын жерде орналасқан немесе компьютерлік желіде таратылған) бөлу.

Параллельді бағдарламаларды жобалаудағы негізгі қиындық әртүрлі есептеу процестерінің өзара әрекеттесуінің дұрыс реттілігін қамтамасыз ету, сонымен қатар процестер арасында ортақ ресурстарды үйлестіру болып табылады. Параллель виртуальды машинаны жалпы есептеу нәтижесін алуға қатысатын көптеген есептерді орындауға арналған нақты есептеу комплексінің құралының(процессор,жады,сыртқы құрылғылар және т.б.)бір бөлігі деп анықтауға болады.Жалпы жағдайда есептер саны PVM-ге кіретін процессорлар асып кету імүмкін. Параллель виртуальды машинасы ретінде жеке алынған дербес компьютер, сондай-ақ параллель архитектурасы бар суперкомпьютері бар жергілікті желі, универсал ЭЕМ, графикалық жұмыс станциялары және дербес компьютерлер бола алады.Осы программалық жасау негізінде қолданушы көптеген есептер параллель орындалу мүмкіндегі бар бір ғана есептеу машинасымен сұхбаттасады деп есептеуге болады.

PVM-нің жұмыс істеуі онда орындалатын есептер арасындағы хабар алмасу мүмкіндігіне сүйенеді.Мұндай жағдайда PVM-ді виртуальды машинаға бірнеше процессор және жалпы немесе жеке ЖСҚ-жедел сақтау құрылғысын-ОЗУ (шартқа байланысты) бөліп көп процессорлы есептеу комплексінде жасаған ыңғайлы.Бұл жағдайда,PVM-дегіесептер арасындағы жылдам ақпараталмасу мәселелері жеңілдейді, сондай-ақ әртүрлі процессорлар орындайтын есептер арасындағы деректерді өрнектеу форматтарын мақұлдау мәселелері жеңілдейді.


PVM-ді қолданудың басты мақсаты- есептеулер жылдамдығын оларды параллель орындау арасында арттыру.Тиімділіктің жоғарғы шекарасы қарапайым бағаланады- егер есептеу үшін бір процессорорнына N бір типті процессорларды қолданса есептеу уақыты N рет кемиді. Нақты ұтыс есептің ерекшелігіне және есептеу программасында есептің ерекшелігі және PVM-нің аппараттық және программалық сипаттамасы қаншалықты ескерілгеніне байланысты.

PVM мен қатар берілген моделідің графикалық интерфейсі- XPVM.XPVM процестердің жүктеу уақытын,күту уақытын, хабар жіберу уақыттарын көругемүмкіндік береді.

PVM-3 жүйесіндегі белгілі бір процессордан жіберілген әрбір есеп бүтін санмен анықталады,оны есеп идентификаторы деп атайды.Және мағынасы жағынан Linux операциялық жүйесіндегі процессидентификаторына ұқсас. Мұнда, PVM-нің N процессінде параллель жіберілген бір орындау файлының көшірмесі әртүрлі TID бар N есеп құрады.

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

Есепаралық ақпарат алмасудың тиімділігін арттыру үшін бірнеше алгоритмдерді қолдану керек. Жеке жағдайда буғатталған хабар жіберу алгоритмін қолдануға болады, «хабар беру » функциясы мәнін қайтарады (яғни жұмыс аяқталады). Мұндай жеткізілгендігі туралы хабарды күтетін хабар беру алгоритмі ұзын хабар бірнеше бөліктерге жіберілгенде, сондай-ақ орындау реті уақыт бойынша қатаң бекітілген командалар алмасуы кезінде қолданылған дұрыс.

Хабар беру және қабылдаудың блокты емес алгоритмін қолданғанда «әңгімелесушінің»жауабын күту кезіндегі процессорлар тоқтап қалуын азайтады. Әсіресе бұл қабылдаушы жағында хабардың келу уақыты белгісіз болғанда аса тиімді. Қабылдау процессорының жұмысын, тек арасында қабылдау буферін сұрай отырып,хабар күту кезінде ағымдағы жұмысты орындайтындай етіп ұйымдастыруға болады.

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

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



 Тораптар, басқа қолданушылар мен бөліну үшін қажет, сондықтан жоғары тиімді желі қажет болады.

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

Процессті C/C++/Fortran програмаларынан шақырылады. Негізгі функцияларды қарастырамыз:

pvm spawn-процесс тудырады

pvm send- белгіленгенпроцесске асинхронды хабар береді.

pvmrecv-белгіленгенпроцесстен немесе басқа кез келген процесстенбұғатталған қабылдау

pvmnrecv-бұғатталмағанқабылдау

pvmmcast-белгіленгенпроцесстерге дерекжіберу.

Келесіфункцияларды қолданыпбуферге/буферденбуыптүйеді/шешеді:

pvmpkint- бүтінсандарды(бір немесе оданкөп) буыптүйеді

pvmupkint- бүтінсандарды(бір немее одан көп) шешеді

pvm spawn функциясынтолығыраққарастырайық:

pvm spawn (char*task, char**argv,

int flag, char*where,

int ntask,int*tids);

task- туындалатын есепатауы;

argv- соңынданольдіксимволыбаресептерпараметрі

flag- нұсқалар(0 есептердіқайжердетуындалатынын анықтау

PVM-ге беріледі )

where- есептіңқайдатуындалатынынанықтайды

 ntask-туындалатынесептердіңкөшірмесаны;

tids- туындалатынесептеридентификаторы, int туындалғанесептерсанынқайтарады.

буып-түюі/шешуіменқатархабардыжіберунемесеалуүшінбуфергекелесіфункциялардықолданыпорналастыру керек:

 pvm initsend, pvm mkbuf, pvm setsbuf

pvm initsend(int encoding)-хабарберуүшінкелісімбойыншаағымдағыбуфердіинициалдайды; әдеттекодтауүшін PvmdatdDefault-нықолданады.

pvm mkbuf(int encoding)- жіберу үшінжаңабуферқұрады жәнеидентификатордықайтарады;

pvm setsbuf(int bufіd)- буфергежіберіп/алу үшінағымдағыбуфердіbufіdатауыменорнатады;

pvm send (int tid, intmsgtag)

tid- хабаржіберушіидентификаторы;

msgtag- осыхабартегі

pvmsendтоптықнұсқау tid пенидентификацияланғанбарлықесептергехабаржібереді.

PVM-ге даярлау

Pvmspawn()функциясыүшін орындалатын фуекциябелгілібіркаталогтаболады.Linux-теесеп$PVM ROOT/bin/$PVM ARCH/ және $HOME/PVM/bin/$PVM ARCHкаталогтарынан3зделед37

PVM ROOT/usr/local/pvm/currentжиынтығы.

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

Pvm-діжіберуүшінpvmd.exe — даменін қолданукерек. Жаңакомпьютерлердіқосукерек: addhost<хостатауы>.Тапсырманы орындауүшінspawn-> , консольдықрежимдетеріпорындаукерек. PVM-дітоқтатуexitкомандасыменорындалады.

MPI – хабарберуинтерфейсі

MPIпараллельпрограммалаудыңалғашқықұралдарыныңбірі. MPI кітапханасынқолданғандаторапүлестірілгенпрограммаларпроцессіС және Fortran сияқтытізбектіпрограммалартілдеріндежазылады.ПроцесстердіңөзараәрекетіжәнеолардысинхрондауMPIкітапханасынапроцедураларыншақырукөмегіменберіледі.

MPIқосымшаларынпрограммалауинтерфейсін90-жылдардыңортасындауниверситеттер,үкіметжәнеөндіріұйымдарыныңжобалаутоптары құрған.Мақсат- әртүрлікөппроцессорлымашиналардатиімдіжүзегеасыратынбірдейкітапханажасау.БүгінгікүніMPIстандартқаайналды.

MPIкітапханасынқолданушыпрограмманыңSPMDстиліболады.Олалдыңғытауарларасипатталған.Берілгенжағдайдаәрбірпроцессбірғанапрограмманыңкөшірмесінорындайды. ПрограмманыңәрбірэкземплярыMPIкітапханасыныңфункцияларыншақыруарқылыөзараәрекеттеседі, оларпроцесстер, топтаржәнеқоршағанортаныңөзараәрекеттерінқамтамасызетеді.

MPIфункционалдықсұраулардыңкейбіреулерінқарастырамыз.

MPIInit- MPIкітапханасынинициализациялайдыжәнепрограммағаберетінкомандалықжолдыңаргументерініңкөшірмесінқайтарады.Нәтижесіндежіберілгенпроцесстержиыныинициаланады.

MPI Comm size- жіберілетінпроцесстерсанынанықтайды.

MPI Send- процестіңпроцессрангін(идентификатор) анықтайды.0-ден1-гедейінгісандар болаалады.

MPI Recv- хабардыберудібұғаттау.Басқапроцесскехабарбереді.

MPI Finalize-MPIкітапханасын«алыптастайды»жәнепроцесстіаяқтайды.

MPI SendжәнеMPI Recvкітапханаларынтолығыраққарастырайық:

Int MPI Send(void*buf, intcount, MPI DatatypedataType, intdest, inttag, MPIComm comm)

Мұндағыbuf,-буферадресініңбасы, count-жіберілетінэлементтер саны;dataType-әрбірэлементтипі,мысалы: MPIInt, MPIDouble, MPIChar,жәнет.б.; dest-адресат рангісі; tag-хабартэгі; comm.-коммуникатор.

IntMPI Recv (void*buf, intcount,

MPI DatatypedataType,

intsource, inttag,

MPIComm comm,

MPIStatus*status)

Мұндағыstatus-қайтарукүнінқайтарады, source-беретінпроцессидентификаторынемесе«немқұрайлы»; tag- хабарбелгісі;қалғанаргументтер MPI Send процедурасында сипатталғансияқты.

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

ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР

  1. https://stud.baribar.kz/19186/parallel-programmalau-programmalau-tilderi/

  2. https://stud.kz/referat/show/21699