
- •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 функциялары
§1.3.2 Векторлы-конвейерлік компьютелер
Алғашқы Cray-1 компьютері 1976 жылы құрастырылып пайдалануға берілгеннен кейін векторлы-конвейерлік компьютерлердің тарихы басталды десе болады. Бұл суперкомпьютердің архитектурасы өте сәтті шыққандықтан, артынша, бірнеше өте ұқсас суперкомпьютерлер жасалынып, оның атауы өте қуатты есептеу техникаларының белгісі ретінде қабылданды.
Өткен ғасырдың 90-шы жылдарының ортасынан бастап, векторлық компьютерлер өз орындарын таратылған жадылы массивті-параллель компьютерлерге бере бастағаны байқалды. Бұл түсінікті де еді. Ерекше дайындалған есептеу жүйелері үшін баға/өнімділік ара-қатынасы жаппай өндірілетін өнімдермен конкуренцияға түсе алмайтыны белгілі, ал осы параметр көп жағдайда шешуші болып табылатыны анық. Сол себепті векторлы-конвейерлік компьютерлердің дамуы осымен аяқталуға жақын деген сөздер де шыға бастады. Алайда, 2002 жылы NEC корпорациясы негізін векторлық процессорлар құрайтын «the Earth Simulator» параллель есептеу жүйесін құрудың негізгі жұмыстары аяқталды деп хабарлады. Бұл жүйе 640 есептеу торабынан тұрды, әр торапқа 8 векторлық процессордан жинақталып, жүйе барлығы 5120 процессорды қамтыды. Әрбір процессордың шектік өнімділігі 8 Гфлопс құрағандықтан, тұтас компьютер үшін бұл шама 40 Тфлопс-тан асып түсті. LINPACK тестіндегі өнімділігі 35,6 Тфлопс құрады, яғни шектік өнімділігінің 89 % - әрине бұл өте керемет көрсеткіш. Бұдан шығатын қорытынды, параллель есептеу техникасы дамуының векторлы-конвейерлік бағыты перспективті бағыттардың бірі болып қала берері анық.
Енді, осы бағытта құрастырылған есептеу жүйелерімен толығырақ танысу үшін, осы класқа жататын компьютерлерге тиісті ерекшеліктердің бәрі архитектурасында бар Cray C90 компьютерін қарастырайық [9]. Оның ізін басушы Cray Т90 компьютерінің құрылымы да осы сияқты, ол тек жекелеген сандық сипаттамаларымен ғана ерекшеленеді.
Сонымен, Cray C90 – өткен ғасырдың 90-шы жылдарының басында өмірге келген векторлы-конвейерлік компьютер. Компьютердің максималды конфигурациясына, ортақ жадымен жұмыс істейтін, бірдей 16 процессор енгізілген. Компьютердің такті уақыты 4,1 нс, ол шамамен 250 МГц тактілік жиілігіне сәйкес келеді. 24-ші суретте Cray C90 компьютерінің жалпы сүлбесі және ондағы бір процессордың құрылымы толық келтірілген.
Cray C90 компьютеріндегі процессорлар бірдей және олар ондағы барлық бөлінетін ресурстарға қатысты тең құқылы: жады, енгізу/шығару секциясы және процессор аралық өзара қатынас секциясы. Олардың ерекшеліктерін қарастырайық.
Жедел жады құрылымы
Cray C90 компьютерінің жедел жадысы барлық процессорлар және енгізу/шығару секциясына бөлінеді. Жадының әрбір сөзі 80 разрядтан тұрады: 64 разряды деректерді сақтау үшін және қосымша 16 разряды қателерді түзету үшін.
24 Сурет. Cray c90 компьютерінің жалпы сүлбесі
Деректерді таңдау жылдамдығын арттыру үшін жедел жады бір мезгілде жұмыс істей алатын көптеген банкаларға бөлінген.
Әрбір процессор әрқайсысы бір тактіде екі сөз жібере алатын қабілеті бар төрт порт арқылы жедел жадымен қатынас жасай алады. Порттардың бірі әрқашанда енгізу/шығару секциясымен байланысқан және кемінде бір порт әрқашанда жазу операциясына бөлінген. Бұндай архитектура кірістік векторы екеуден аспайтын векторлық операцияларды орындау үшін өте ыңғайлы.
Максималды конфигурацияда компьютер жадысын 1024 банкаға бөлуге болатыны қарастырылған. Мұнда әрбір 8 секция 8 подсекцияға, әрбір подсекция 16 банкаға бөлінген (25 сурет). Тізбекті адрестер кезекпен әрбір параметр бойынша жүргізіледі:
адрес 0 - 0-ші секция, 0-ші подсекция, 0-ші банка;
адрес 1 - 1-ші секция, 0-ші подсекция, 0-ші банка;
адрес 2 - 2-ші секция, 0-ші подсекция, 0-ші банка;
…
адрес 8 - 0-ші секция, 1-ші подсекция, 0-ші банка;
адрес 9 - 1-ші секция, 1-ші подсекция, 0-ші банка;
…
адрес 63 - 7-ші секция, 7-ші подсекция, 0-ші банка;
адрес 64 - 0-ші секция, 0-ші подсекция, 1-ші банка;
адрес 65 - 1-ші секция, 0-ші подсекция, 1-ші банка;
...
Қандай да бір секцияға бір мезгілде қатынас жасалына қалса шиелініс пайда болады, бірақ ол бір тактіде шешіледі. Бұл жағдайда сұраныстардың бірінің өңделуі жалғастырыла береді де, ал басқасы жай бір тактіге бұғатталады. Егер қандай да бір секцияның бір подсекциясына бір мезгілде қатынас жасалатын болса, онда шиеліністі шешуге қажетті уақыт 6 тактіге жетуі мүмкін. Әрине, қандай да бір секцияның қандай да бір подсекциясына тұрақты түрде қатынас жасалына беретін болса, онда шиеліністің максималды саны алынары түсінікті де. Бұл процессордың 64 еселік қадаммен орналасқан деректермен векторлық операцияларды орындау кезінде болатыны белгілі. Осы мысалдың өзі Cray C90 компьютерінің бір процессорында бір бағдарламаны ғана орындау барысында шиеліністер болуы мүмкіндігі фактісінің иллюстрациясы болары анық.