
- •Isbn 978-601-217-247-8
- •Есептеу машиналары
- •§1.1.1 Параллель виртуалды машиналар
- •1 Сурет. Vm/sp, vм/ха, vn/еsа машиналары
- •2 Сурет. Виртуалды машина жүйесі
- •3 Сурет. VMware терезесі
- •4 Сурет. Бір компьютерде бірнеше операциялық жүйе
- •5 Сурет. Вм консолынің мысалы
- •6 Сурет. Виртуалды машиналар жүйесінің архитектурасы
- •§1.1.2 Виртуалды машиналардың түрлері
- •§1.1.3 Виртуаландыру - ақпараттық жүйелерді реттеудің басты жолы
- •§1.2.1 Компьютердің аппараттық құрылымын жетілдіру
- •7 Сурет. Бір операцияны бес тактіде орындайтын тізбекті құрылғының
- •8 Сурет. Бір операцияны әрбірі бес тактіде орындайтын екі бірдей тізбекті
- •10 Сурет. Конвейерлік құрылғы өнімділігінің кіріс деректер
- •11 Сурет. Illiac IV матрицалық жүйесінің жобасы
- •§1.2.2 Компьютерді басқарудың интеллектуалдығын жоғарылату
- •12 Сурет. Ортақ жадылы параллель компьютерлер
- •13 Сурет. Таратылған жадылы параллель компьютерлер
- •14 Сурет. Ортақ шиналы мультипроцессорлық жүйе.
- •15 Сурет. Матрицалық коммутаторлардағы
- •16 Сурет. Омега - желі мультипроцессорлық жүйесі.
- •17 Сурет. Мультикомпьютерлерлік жүйелер байланыс топологияларымен: а – сызықша; б – дөңгелек; в – жұлдызша
- •18 Сурет. Процессорлардың байланыс топологияларының нұсқалары
- •19 Сурет. Сm* есептеу жүйесінің сызбасы
- •20 Сурет. Bbn Butterfly есептеу жүйесінің сызбасы
- •§1.2.3 Функционалды құрылғылар жүйесі
- •§1.3.1 Параллель компьютерлер және жүйелер классификациясы
- •21 Сурет. М. Флин классификациясының sisd және simd кластары
- •22 Сурет. М. Флин классификациясының misd және mimd кластары
- •23 Сурет. Mimd класына р. Хокнидың қосымша
- •§1.3.2 Векторлы-конвейерлік компьютелер
- •24 Сурет. Cray c90 компьютерінің жалпы сүлбесі
- •25 Сурет. Cray c90 компьютері жадысының бөлінуі
- •26 Сурет. Cray c90 компьютерінде векторлық операциялардың орындалуы
- •27 Сурет. Cray c90 компьютерінде векторлық операциялардың ілінісуі
- •§1.3.3 Ортақ жадылы параллель компьютерлер
- •28 Сурет. Hewlett Packard Superdome компьютері
- •29 Сурет. Hewlett Packard Superdome компьютерінің
- •§1.3.4 Таратылған жадылы есептеу жүйелері
- •30 Сурет. Cray t3e компьютерінің коммуникациялық торы
- •31 Сурет. Cray т3d/t3e компьютерлеріндегі барьерлі синхрондау
- •32 Сурет. Есептеу кластерінің жалпы схемасы
- •33 Сурет. Мвс-1000м суперкомпьютерінің құрылымы
- •34 Сурет. Коммуникациялық ортаның латенттілігі және өткізу қабілеті
- •§1.3.5 Метакомпьютинг
- •§2.1.1 Үлкен есептер және үлкен компьютерлер
- •35 Сурет. Сандық эксперименттің этаптары
- •§ 2.1.2 Алгоритм графы және параллель есептеулер
- •§ 2.1.3 Шексіз параллелділік концепциясы
- •§ 2.1.4 Ішкі параллельділік
- •37 Сурет. Матрицаларды көбейту графы
- •38 Сурет. Үшбұрышты жүйелерге арналған графтар
- •39 Сурет. Блокты-екідиагоналды жүйеге арналған Макрограф
- •40 Сурет. Блокты-екідиагоналды жүйеге арналған граф
- •41 Сурет. Жалпыланған пралллель форманың ярустары
- •42 Сурет. Графтағы микро және макропараллельділік
- •§2.2.1 Дәстүрлі тізбекті тілдерді пайдалану.
- •§2.2.2 OpenMp бағдарламалау технологиясы
- •44 Сурет. ОреnМр: бағдарламаның орындалу процесі
- •§2.2.3 Хабарлама жіберу негізіндегі бағдарламалау жүйелері. Mpi бағдарламалау жүйесі
- •Int mpi_Comm_rank(mpi_Comm comm, int *rank)
- •Int mpi_Send(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm)
- •Integer count, datatype, dest, msgtag, comm, request, ierr
- •Int mpi_Isend(void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Int mpi_Irecv(void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, source, msgtag, comm, request, ierr
- •Int main(argc,argv)
- •Int argc;
- •Include 'mpif.H’
- •Integer ierr, rank, size, prev, next, reqs(4), buf(2)
- •Integer stats(mpi_status_size, 4)
- •Int mpi_Waitany( int count, mpi_Request *requests, int *index, mpi_Status *status)
- •Integer count, requests(*), index, status(mpi_status_size), ierr
- •Int mpi_Waitsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Integer incount, requests(*), outcount, indexes(*), ierr,
- •Int mpi_Test(mpi_Request *request, int *flag, mpi_Status *status)
- •Integer request, ierr, status(mpi_status_size)
- •Int mpi_Testall( int count, mpi_Request *requests, int *flag, mpi_Status *statuses)
- •Integer count, requests(*), statuses(mpi_status_size,*), ierr
- •Int mpi_Testany(int count, mpi_Request *requests, int *index, int *flag, mpi_Status *status)
- •Integer count, requests(*), index, status(mpi_status_size), ierr
- •Int mpi_Testsome( int incount, mpi_Request *requests, int *outcount, int *indexes, mpi_Status *statuses)
- •Integer incount, requests(*), outcount, indexes(*), ierr,
- •Int mpi_Iprobe( int source, int msgtag, mpi_Comm comm, int *flag, mpi_Status *status)
- •Include 'mpif.H’
- •Integer ierr, rank, size, n, nl, I, j
- •Integer irr, status(mpi_status_size), req(maxproc*2)
- •If(ir .Ne. Rank)
- •Int mpi_Send_init( void *buf, int count, mpi_Datatype datatype, int dest, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, dest, msgtag, comm, request, ierr
- •Int mpi_Recv_init( void *buf, int count, mpi_Datatype datatype, int source, int msgtag, mpi_Comm comm, mpi_Request *request)
- •Integer count, datatype, source, msgtag, comm, request, ierr
- •Integer сомм, ierr
- •Include 'mpif.H’
- •Integer ibuf(maxproc)
- •Integer req(2*maxproc), statuses(mpi_status_size, maxproc)
- •Integer count, datatype, root, comm, ierr
- •Integer scount, stype, rcount, rtype, root, comm, ierr
- •Integer scount, stype, rcounts(*), displs(*), rtype, root, comm, ierr
- •Integer scount, stype, rcount, rtype, root, comm, ierr
- •Int mpi_Bcast(void *buf, int count, mpi_Datatype datatype, int source, mpi_Comm comm)
- •Int mpi_Gather( void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int dest, mpi_Comm comm)
- •Int mpi_Scatter(void *sbuf, int scount, mpi_Datatype stype, void *rbuf, int rcount, mpi_Datatype rtype, int source, mpi_Comm comm)
- •Int main(argc,argv)
- •Int argc;
- •Int numtasks, rank, sendcount, recvcount, source;
- •Int mpi_Barrier (mpi_Comm comm)
- •§ 2.2.4 Бағдарламалаудың басқа тілдері және жүйелері.
- •Параллель есептеуде қолданылатын қысқаша қазақша-орысша терминологиялық сөздік
- •Параллель есептеуде қолданылатын қысқаша орысша-қазақша терминологиялық сөздік
- •Және орта айнымалылары
- •Mpi функциялары
§2.1.1 Үлкен есептер және үлкен компьютерлер
Егер үлкен есептеу жүйелері құрылса, онда олардың қандай да бір пайда болған үлкен есептерді шешу үшін қажеттілігі болғаны. Мысалы, қауіпті аймақта қандай да бір биік үй салынып жатыр делік. Ол жер қыртысының тербелісіне және қатты дауылға төтеп бере ала ма? Жобасы дайындалып жатқан ұшақтың жаңа түрі әртүрлі ұшу режимдерінде өзін қалай көрсетеді? Жер шарымыздағы климат енді бір жүз жыл көлемінде қандай болмақ? Жер қойнауындағы мұнай, газ қорының болашағы қандай?
Осы сияқты сұрақтар әрбір салада жүздеп, мыңдап пайда болуда. Олардың жауабын іздеудің жалпы қағидалары өте ертеде құрастырылған. Бірінші, осы обьектінің немесе процестің математикалық моделін құрудан бастайды. Математикалық моделдеу объектінің белгілі бір болмысын немесе болып жатқан процестерді теңдеулер тілінде және басқадай математикалық құралдар арқылы көрсету. Яғни, математикалық модель зерттеу облысына қатысты қандай да бір дифференциалдық, интегралдық, алгебралық немесе басқа да бір өрнектер жиыны. Осы алынған математикалық модельді, яғни теңдеуді немесе әртүрлі теңдеулер жүйесін шеше отырып, біз қойылған сұрақтардың жауабын ала аламыз.
Әрине, компьютерлер қаншалықты қуатты болғанымен олар өз беттерінше берілген есептерді шеше алмайды. Олар тек қана өте қарапайым амалдарды ғана орындай алады. Ал олардың бүкіл интеллектуалдық күші адам құрастырған бағдарламалармен анықталады. Бағдарламалар қандай да бір мақсатқа құрылған қарапайым амалдар тізбегін іске асырады. Шешімді іздеу, қарапайым амалдар тізбегін орындау процесіне келіп тіреледі. Бұл алгоритмді құрастыру деп аталады.
Сонымен, егер, математикалық модель тұрғызылса, онда келесі қадам есепті шешудің алгоритмін құрастыру болмақ. Есептеу нәтижесінің сапасы осыларға тікелей байланысты.
Үлкен есептер және үлкен компьютерлерді бір жіптің екі ұшы сияқты өзара тығыз байланысқан әрекет өрісі десек болады. Егер бір ұшы үлкен есептер бар болса, онда екінші ұшы компьютерлер де пайда болуы керек. Үлкен есептерді шешу қажеттілігі, аса қуатты компьютерлерді құрастыруға, жетілдіруге итермелейді. Өз кезегінде, бұл компьютерлер математикалық модельдерді жақсартуға мүмкіндік бере отырып, одан да үлкен есептерді қояды. Соңында қарапайым компьютерлер параллель компьютерлерге өзгерді. Есептер бұдан параллель бола қойған жоқ, бірақ есептеудің параллель құрылымды алгоритмдері дами бастады. Нәтижесінде шешілетін есептердің өлшемін тағы да арттыру мүмкіндігі пайда болды. Ендігі кезекте оптикалық және кванттық компьютерлер тұр. Бұл процесс жалғаса берері анық.
Енді үлкен есептердің қалай пайда болатынын, климаттық жүйені модельдеу мәселесін мысалға алып қарастырып көрелік.
Климаттық жүйе құрамына негізінен атмосфера, мұхит, құрғақ жер, криосфера және биота кіреді деп түсінеміз [18]. Климат деп жеткілікті үлкен уақыт аралығында жүйе жүріп өтетін жағдайының ансамблін айтады. Климаттық модель – бұл климаттық жүйені сипаттайтын математикалық модель. Климаттық модельдің негізін тұтас ортаның динамикасы теңдеулері және тепе-теңдік термодинамика теңдеулері құрайды. Бұдан басқа, модельде климатқа қатысты барлық физикалық процестер: атмосферадағы шағылысуды тасымалдау, судың фазалық ауысулары, бұлт және конвенция, шағын газ қоспасын тасымалдау және олардың өзгеруі, жылудың турбуленттік диффузиясы, кинетикалық энергияның диссипациясы және көптеген тағы басқа параметрлер мазмұндалады. Тұтас алғанда модель дербес туындылы үшөлшемді сызықты емес теңдеулер жүйесін құрайды. Осы теңдеулер жүйесінің шешімі бізге климаттық жүйенің нақты жағдайы туралы барлық маңызды сипаттамаларын бере алады. Алайда, климаттық модель өте күрделі. Көптеген жаратылыстану ғылымдарынан айырмашылығы, климатта алдын ала мақсатты бағытталған ауқымды эксперименттер жүргізе алмаймыз. Сондықтан климатты зерттеудің бірден-бір жолы – ол математикалық модельмен сандық эксперименттер жүргізу және алынған нәтижелерді климатты бақылау нәтижелерімен салыстыру. Алайда мұнда да бәрі айтылып өткендей оңай емес. Бүгінгі күні климаттық жүйенің түрлі құрамдас бөліктері үшін құрылған математикалық модельдердің бәрі бірдей дамымаған. Тарихи жағынан алсақ бірінші болып атмосфера моделі құрыла бастады. Қазіргі уақытта да ол басқаларға қарағанда әлдеқайда жақсы дамыған, және соңғы жүзжылдықта атмосфераға бақылаулар жүргізіле отырып көптеген эмпирикалық деректер жиналған. Яғни, атмосферада оның математикалық моделінен алынған нәтижелермен салыстыратын деректер жеткілікті десе де болады. Климаттық жүйенің басқа құрамдас бөліктері үшін жасалған бақылау нәтижелері тым аз. Олардың сәйкес математикалық модельдері де әлсіз дамыған. Биота үшін математикалық модель құрастыру соңғы жылдары ғана қолға алынуда.
Климаттың жалпы идеалды моделі толық жасалуы үшін әлі де өте көп еңбек сіңірілуі керек және ол, сәйкесінше, көп уақытты талап етері анық. Климаттық модельді шындыққа жақындату үшін, өте көп сандық эксперименттер жүргізіліп, алынған нәтижелерді талдау негізінде оған өзгертулер енгізіліп отырылуы қажет. Әзірше эксперименттер климаттық жүйенің жеке бөліктерінің модельдерімен немесе олардың жекелеген комбинацияларымен жүргізілуде. Көбіне мұхит және атмосфераның бірлескен моделі қарастырылады. Эксперименттер жүргізуге қажетті басқа бөліктерінің жетіспеген деректері бақылау нәтижелерінен болмаса қандай да бір ой пікірлерден алынады. Бүгінгі күні, жер бетіндегі барлық тіршілік иелеріне қатысты өте маңызды мәселелердің бірі, көмір қышқыл газ, озон және т.б. газ құрамдастары концентрацияларының өзгеруі, климаттың өзгеруіне әкеліп соғуы. Айтылып кеткендей, климаттық болжам тек қана сандық эксперименттер көмегімен ғана жүргізілуі мүмкін. Сондықтан, болашақта климаттың қалай өзгеретінін алдын ала болжап айта алатындай болу үшін, бүгінгі күні есептеудің үлкен көлемін жүргізе алатындай мүмкіндіктеріміз болуы керек. Оны шамалап болса да бағалап көрелік.
Климаттың маңызды бөліктерінің бірі атмосфераның моделін қарастырайық және бізді атмосфералық процестердің мысалға 100 жылғы дамуы қызықтырсын делік. Сандық шешімдерді табудың алгоритмдерін құрастырған кезде дискретизация қағидасы пайдаланылатыны айтылған болатын. Заманауи модельдерде атмосфера бөлінетін элементтердің жалпы саны бүкіл жер шары бетінде ендік және бойлық бойынша қадамы 1° болатын және биіктігі 40 қабаттан тұратын тормен анықталады. Бұл шамамен 2,6×106 элемент. Әрбір элемент шамамен 10 компонентпен беріледі. Онда жер шарындағы кезкелген бекітілген уақыт мезетіндегі атмосфераның күйі 2,6×107 сандар ансамблімен сипатталады. Сандық нәтижелерді өңдеу шарты әрбір 10 минут сайын барлық ансамблдерді табуды талап етеді, яғни 100 жылда шамамен 5,3×104 ансамблдерді анықтау қажет. Бір сандық эксперимент кезінде барлығы 1,4×1014 аралық есептеулердің мәнді нәтижелерін есептеуге тура келеді. Егер енді әрбір аралық нәтижені алуға және оны ары қарай өңдеуге 102-103 арифметикалық операция орындау керек болатынын ескеретін болсақ, бұл дегеніміз атмосфераның ауқымды моделіне бір сандық эксперимент жүргізі үшін шамамен 1016-1017 жылжымалы үтірмен арифметикалық операция орындау қажет деген сөз.
Сонымен, өнімділігі секундына 1012 операция болатын есептеу жүйесі өзінің толық жүктелуі және тиімді бағдарламалау кезінде бұндай экспериментті бірнеше сағат бойы жүргізеді. Ал толық климат моделін пайдалану бұл уақыттың ретін минимум тағы бірге көтерері анық. Бағдарламалаудың әлсіздігі және бағдарламаларды компиляциялау кезіндегі қосымша шығындар есебінен бұл уақыт реті тағы да артады. Ал осы сияқты эксперименттерді қанша жүргізу керек! Сол себепті, секундына триллион операция орындай алатын есептеу жүйесінің өзін, климат мәселелерін зерттеу талаптары жағынан қарасақ жылдам деп айта алмаймыз.
Климаттық модельдегі есептеудің үлкен көлемі және одан алынар қорытындылардың адам өміріне маңыздылығы, есептеу техникасын жетілдіру ісін үнемі жалғастыруды талап етуде. Соңғы жылдары, тек климатқа қатысты мәселелерді шешуге ғана арналған арнайы өнімділігі зор есептеу жүйелерін құрстыру жобалары дайындалып болды.
Бұның кері әсері де бар. Есептеу техникаларының дамуы үлкен есептерді шешуге мүмкіндік береді. Үлкен есептерді шешу барысындағы түзетулер, мәселелер математиканың жаңа бөлімдерін дамытуға мәжбүр етуде. Жоғарыда айтып кеткендей климатты алдын ала болжауды зерттеу, өте үлкен уақыт аралығында дифференциалдық теңдеулер жүйесінің шешімін анықтауды талап етеді. Бірақ бұл сол жағдайда ғана мағынасы болады, егер шешім шамалы ауытқуларға орнықты болса. Климаттық жүйенің құрамдас бөліктерінің бірі болып саналатын атмосфера, траекториялары нүкте бойынша орнықсыз болатын ашық (яғни сырттан энергия кіретін) сызықты емес жүйелер класына жатады. Бұндай жүйелер ерекше қасиеттерге ие болады. Бұл қасиеттерді анықтау, дифференциалдық теңдеулердің сапалы теориясының әдістерімен сызықты емес диссипативті жүйелер теориясын одан ары дамытуға себеп болды. Ол өз кезегінде климатты болжауда есептеулерді одан әрі қиындата отырып тағы да қосымша үлкен есептеу қуаттарын қажет етті.
Сонымен, климатты зерттеу үшін өте қуатты есептеу жүйелері қажет екеніне анық көзіміз жетті, яғни үлкен есепке үлкен компьютер. Бұндай мысалдарды айта берер болсақ әрине өте көп, және ол есептер үшін құрылған математикалық модельдерді есептеу техникасынсыз пайдалана алмайтынымыз анық. Бірақ көп жағдайларда жай ғана есептеу техникалары емес ал жоғары өнімді есептеу жүйелері қажет етіледі.
Негізінде, зерттеліп отырған обьектілердің бәрі – ол мұнайды алу процесі немесе автомобиль кузовының беріктілігі ме немесе үлкен трансформаторлардағы электр энергиясының өзгеру процестері және т.б. болсын үшөлшемді. Сандық есептеудің жоғары дәлдігін алу үшін, зерттеліп отырған обьектіні 100×100×100 кем емес тораптан тұратын тормен жауып, тордың әрбір нүктесінде 5-20 функцияны анықтау керек. Егер обьектінің стационар емес жағдайы зерттелетін болса, онда функция мәндерін 102-104 уақыт мезеттерінде анықтау қажет. Сондықтан осы сияқты обьектілер үшін аралық есептеулердің мәнді нәтижелерінің саны шамамен 109-1011 құрауы керек. Енді тәжірибе көрсеткендей, әрбір аралық нәтижені есептеуге және өңдеуге орташа алғанда 102-103 арифметикалық операция орындау талап етілетінін ескеретін болсақ, онда сандық эксперименттің бір нұсқасын ғана жүргізу үшін шамамен 1011-1014 операция орындалуы қажет. Ал енді қажетті нұсқалар санын, бағдарламалау сапасы есебінен кездесетін есептеу кезіндегі қосымша шығындарды, операциялық жүйенің жұмыстары және компиляцияларын және т.б. ескеретін болсақ, онда есептеу техникасының жылдамдығы секундына бірнеше миллиардтаған операцияны құрауы керек. Әрине бұл сияқты есептеу техникалары арзан тұрмайтыны түсінікті.
Енді сандық эксперименттердің жүргізілу сапасына аздап тоқтала кетейік. Ол көптеген факторлармен анықталады. Төмендегі 35-ші суретте әрбір экспериментті жүргізу этаптары кеңейтілген түрде көрсетілген.
35-ші суреттен келесі қарапайым ойды тұжырымдауға болады: егер ондағы этаптардың бірі ғана тиімсіз болса, онда сандық эксперимент те тиімсіз болады. Сондықтан, сандық эксперименттің әрбір этапы өте ұқыпты зерттеліп сапалы жүргізілуі қажет.
Сұрақтар мен тапсырмалар
Үлкен есептер және үлкен есептеу жүйелері туралы не айтасыз?
Математикалық модельдеу және есептеу алгоритмі дегеніміз не?
Үлкен есептер және үлкен компьютерлер арасындағы байланыс.
Үлкен есептердің қалай пайда болатынына қандай да бір мысал келтіріңіз. Талдау жасаңыз.
Жоғары өнімді есептеу жүйелері немен ерекшеленеді?
Сандық эксперименттер туралы не айтасыз?
Сандық эксперименттерді жүргізу этаптарына талдау жасаңыз.