Дәріс конспектілері (тезистері) уе-10-20 фр 03


mpif77 -о program program.f



бет43/46
Дата14.01.2023
өлшемі2,05 Mb.
#61250
түріКонспект
1   ...   38   39   40   41   42   43   44   45   46
Байланысты:
Дәріс мәтіні

mpif77 -о program program.f
Орындалатын файлды қабылдағаннан кейін оны процессорлардың қажетті санында жіберу керек. Ол үшін МРI-қосымшаларды жіберу (жүктеу) командасы mpirun ұсынылады, мысалы:
mpirun -np N <аргументтерімен бағдарлама>,
Мұндағы N – бір есеп үшін процестер саны. Жүктелгеннен кейін барлық жіберілген процестер бір ғана бағдарламаны орындайды, және орындалу нәтижесі жүйеге байланысты терминалға беріледі немесе анықталған атпен файлға жазылады.
Барлық қосымша обьектілер: МРI пайдаланылатын функция аттары, процедуралар аттары, тұрақтылар, деректердің анықталған типтері және т.с.с., MPI_ префиксімен беріледі. Мысалы, бір процестен екіншісіне хабарлама жіберетін функцияның аты MPI_Send. Егер пайдаланушы бағдарламада осындай префикспен аттарды пайдаланбаса, онда МРI объектілерімен біле тұра келіспеушіліктер болмайды. МРI интерфейсінің барлық сипаттаулары mpif.h (mpi.h) файлында жинақталған, сондықтан МРI-бағдарламасының басында include „mpif.h‟ (Фортран тіліндегі бағдарламалар үшін) (#include “mpi.h” Си тіліндегі бағдарламалар үшін) директивасы тұруы керек.
MPI-бағдарлама - бұл параллель ара-қатынас жасайтын процестер жиынтығы. Бағдарламаның параллель бөлігін құра отырып, барлық процестер бір рет қана туындайды. MPI-бағдарламаның орындалуы барысында қосымша процестердің туындауына немесе бар процестердің жойылуына жол берілмейді (MPI-2.0-де мұндай мүмкіндік бар). MPI-да ешқандай жалпы айнымалылар болмаса деректер жоқ, әрбір процесс өзінің адрестік кеңістігінде жұмыс істейді. Процестер арасындағы ара-қатынастың негізгі тәсілі хабарламаны айқын жіберу болып табылады.
Бағдарлама параллель процестерінің ара-қатынасын таратпау (локализация) үшін процестер топтарын құруға болады. Бұл жағдайда олардың қатынас жасауы үшін жеке ортасы— коммуникатор ұсынылады. Құрылатын топтар құрамы еркін түрде алынады. Топтар бірдей болуы, қиылысуы да қиылыспауы да және бірі бірінің ішіне толық кіруі де мүмкін. Процестер ара-қатынасы тек қандай да бір коммуникатордың ішінде ғана орын алады, әртүрлі коммуникаторлармен жіберілген хабарламалар қиылыспайды және бір-біріне кедергі келтірмейді. Фортран тілінде коммуникаторлар типі INTEGER, ал Си тілінде - MPI_Comm. Бағдарламаның жүктелген мезетінде барлық туындаған процестер MPI_COMM_WORLD коммуникаторы шеңберінде жұмыс істейді деп есептеледі. Бұл коммуникатор әрқашан болады және ол MPI-бағдарламасының барлық жүктелген процестерінің ара-қатынасы үшін қызмет атқарады. Сонымен қатар, бағдарламаның бастапқы жүктелуі кезінде бір ғана ағымды процестен тұратын MPI_COMM_SELF коммуникаторы және бірде-бір процесс кірмейтін MPI_COMM_NULL коммуникаторы болады.
MPI-бағдарламасының әрбір процесіне бүтін теріс емес сан болатын бірегей атрибут процесс нөмірі беріледі. Осы атрибуттың көмегімен процестер арасындағы өзара қатынастың айтарлықтай бөлігі жүргізіледі. Бір коммуникатордағы әрбір процестің жеке нөмірлері болатыны түсінікті. Бірақ процесс бір мезгілде әртүрлі коммуникаторларға кіре алатыны себепті, оның бір коммуникатордағы нөмірі басқа коммуникатордағы нөмірінен өзгеше болуы мүмкін. Бұдан келіп процестің негізгі екі атрибуты шығады: коммуникатор және коммуникатордағы нөмірі.
Егер топта п процесс болса, онда кезкелген процестің осы топтағы нөмірі 0-ден п-1-ге дейінгі аралықта жатады. Осы сияқты сызықты нөмірлеу, бағдарлама процестерінің логикалық ара-қатынасын әрқашан бірдей көрсете бермейді. Мысалы, процестер берілген есептің мағынасына байланысты тікбұрышты тордың тораптарында орналасуы және олар өздерінің тікелей көршілерімен ғана ара-қатынас жасауы мүмкін. Мұндай жағдайды, сәйкес процестердің виртуалды топологиясын суреттей отырып пайдаланушы өзінің бағдарламасында жеңіл көрсете алады.
Бағдарлама процестерін есептеу жүйесінің физикалық процессорларына көшіргенде бұл ақпараттың пайдасы болуы мүмкін.
Процестер өзара қатынасының негізгі әдісі хабарламаны жіберу болып табылады. Хабарлама – бұл қандай да бір типтегі деректер жиыны. Әрбір хабарламаның бірнеше атрибуттары болады, мысалы, жіберген-процесс нөмірі, қабылдаған-процесс нөмірі, хабарлама идентификаторы және т.б. Хабарламаның маңызды атрибуттарының бірі болып оның идентификаторы немесе тэг есептеледі. Мысалы, идентификатор бойынша хабарламаны қабылдаған процесс, оған тек бір процестен ғана келіп түскен екі хабарламаны ажырата алады. Хабарлама идентификаторы 0-ден 32767-ге дейінгі аралықта жататын бүтін теріс емес сан.
Хабарлама атрибуттарымен жұмыс істеу үшін, өрістері атрибуттар мәндеріне қатынасты қамтамасыз ететін MPI_Status структураcы енгізілген.
Тәжірибе жүзінде хабарлама көбіне қандай да бір буферде бірінен кейін бір қатар орналасқан бір типті деректер жиыны түрінде болады. Мұндай хабарлама мысалы, пайдаланушы сәйкес бүтін санды векторда орналастырған бірнеше жүздеген бүтін саннан тұруы мүмкін. Алайда, бұндай ситуацияның кемінде екі шектеуі болуы мүмкін. Біріншіден, кейбір кездерде түрлі типті деректерден тұратын хабарлама құру қажет болады. Екіншіден, жіберілетін деректер жадыдан әрқашан үздіксіз облыс ала бермейді. Мысалы, егер Fortran бағдарламалау тілінде матрица бағандарының элементтері жадыда бірінен кейін бірі орналасса, онда жолдар элементтері қандай да бір қадаммен орналасады. Жол элементтерін жіберу үшін, біріншіден оларды жинақтап алу керек, одан кейін жіберу, одан қайта ашу керек болады.


Достарыңызбен бөлісу:
1   ...   38   39   40   41   42   43   44   45   46




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет