
- •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 функциялары
38 Сурет. Үшбұрышты жүйелерге арналған графтар
Бұл суретте параллельді форманың ең максималды түрінің бірі көрсетілген. Оның ярустары пунктирлі сызықтармен белгіленген. Егер aij элементтерінің енгізілуіне сәйкес келетін төбелерді бірінші яруске орналастырса, онда параллельді форма канондық болады. а — bс түріндегі операциялар енетін ярустардың жалпы саны n - 1 тең. Бірінші яруста b векторының элементтерін енгізу операциялары орналасқан.
Егер (2.6) өрнегіндегі қосындыны есептеуде біз қандай да бір оймен қосудың тізбекті әдісіне тоқтаған болсақ, онда j индексінің өсуі бойынша қосуды таңдау жалпы кездейсоқ жасалған болатын. Бұл таңдаудың қандай да бір артықшылықтары көрініп тұрмағандықтан кері қоюдың алгоритмін j индексінің кемуі бойынша қосу арқылы тұрғызуға болады. Онда оған сәйкес алгоритм келесі түрде болады:
(2.8)
Оның графы n = 5 жағдайы үшін 40, б-суретте көрсетілген. Енді жоғарғы бұрыштағы төбе координатасы i = 1, j = 1 болатын нүктеде орналасады. Қандай да бір параллель форманың ярустарына a - bс түріндегі операцияларға сәйкес келетін төбелерді орналастыра отырып, ондағы әрбір яруста әрқашанда тек бір төбе ғана бола алатынын байқаймыз. Бұл 40-шы суретте графтың барлық төбелері бір жолда жатуымен түсіндіріледі. Бұл жол пунктирлі бағыттармен көрсетілген. Сондықтан (2.8) алгоритмі графындағы a – bc түріндегі операцияларды қамтитын ярустардың жалпы саны әрқашан (n2 – n + 2)/2 тең болады, бұл (2.7) алгоритмі графындағы n-1 ярустар санына қарағанда әлдеқайда көп.
Күтпеген нәтиже алынды десе болады. Шынында, екі алгоритм де (2.7) және (2.8) бір ғана есепті шешуге арналған, олар (2.6) бірдей формулалары негізінде құрылған және дәл есептеулерге қатысты алсақ эквивалентті. Екі алгоритм де бірдей жады көлемін және азайту, көбейту операцияларының бірдей санын талап ететіндіктен, бірпроцессорлы компьютерлерде іске асырылу жағынын алғанда олар бірдей.
Дегенмен, екі алгоритм графтарының бір-бірінен айтарлықтай айырмашылығы бар. Егер бұл алгоритмдерді n әмбебап процессордан тұратын параллель есептеу жүйесінде іске асырса, онда (2.7) алгоритмін n-ге пропорционал уақыт ішінде, (2.8) алгоритмін тек n²-қа пропорционал уақыт ішінде іска асыруға болады. Бірінші жағдайда процессорлардың орташа жүктелуі 0,5-ке, екінші жағдайда 0-ге жуық болады.
Сонымен, қарапайым компьютерлерде іске асырылуы жағынан қарағанда бірдей болатын алгоритмдер, параллель компьютерлерде іске асырылу кезінде мүлдем әртүрлі болулары мүмкін. Осы мысалды қолдана отырып айта кететін нәрсе, параллель компьютерлерді математикалық тұрғыдан игерудің басты қиындықтары да осы фактінің негізінде жатыр. Көптеген жылдар бойы «қарапайым» компьютерлерде жұмыс істейтін әртүрлі мамандық иелері, алгоритмдерді негізінен олардың 3 сипаттамасы бойынша бағалайды: операция саны, талап етілетін жадының көлемі және дәлдігі. Осы сипатттамалар негізінде барлығы дерлік тұрғызылды: есептеу техникасының негізгі параметрлері, есептеу ісіне үйрету процесі, есептеу әдістері және алгоритмдерін құрастыру, тиімділікті бағалау, тілдерді және трансляторларды құрастыру және көптеген т.б. Параллель есептеу жүйелерін құруда, алгоритмдерден, принципиалды түрде басқа қасиеттері мен сипаттамалары талап етілді, ал оларды білу тізбекті компьютерлер үшін қажеті де болмаған еді. Сонымен алгоритмдерді тереңірек зерттеу, олардың параллель қасиеттерін оқып үйрену, параллельділікті анықтау үшін конструктивті әдістемелігін құрастыру қажетті де маңызды іс-шаралардың қатарына жатады.
Математикалық физика теңдеулерін торлар әдістерімен шешу кезінде пайда болатын сызықты алгебраның көптеген есептерінің ішінде, блокты-екідиагоналды матрицалы сызықты алгебралық теңдеулер жүйесін шешу есебі жиі кездеседі. Мұндағы диагоналдық емес блоктар диагоналды матрицалардан тұрады, ал диагональ бойындағы блоктар – екідиагоналды матрицалар. Анығырақ болу үшін, жүйенің матрицасы сол жақты үшбұрышты болсын деп есептейік. Матрицаның блоктық реті m, ал блок реті n болсын. Сонымен, Au = f түріндегі сызықты алгебралық теңдеулер жүйесін қарастырайық [10].
мұндағы
(2.9)
Егер U0 = 0, D0 = 0 деп алатын болсақ, блокты – екідиагоналды жүйенің (2.9) шешімі рекуррентті анықталады:
Uk = Bk-1(Fk – Dk-1Uk-1), 1 ≤ k ≤ m (2.10)
Х = В-1(F — DY) макрооперациясы, F, Y векторлары және В, D матрицалары бойынша Х векторын есептейді. Әрбір төбесі осы макрооперацияға сәйкес келеді деп есептей отырып, (2.9) алгоритмінің графын тұрғызамыз. Ол 39-шы суретте көрсетілгендей болады. Төбелердің және доғалардың үлкен көлемі, бұл операциялардың күрделілігін және күрделі ақпарат берілетінін көрсетеді.