
- •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 функциялары
30 Сурет. Cray t3e компьютерінің коммуникациялық торы
Бұл әрбір тораптың алты тікелей көршілері бар дегенді білдіреді және де тораптардың қайда орналасқанына байланыссыз: параллелепипед ішінде, қабырғасында, қырында немесе төбесінде.
Коммуникациялық желіні мұндай тәсілмен ұйымдастырудың көп артықшылықтары бар, олардың ішінен екеуін атап кетелік. Біріншіден, бұл бұзылған байланыстарды айналып өту үшін альтернативті маршрут таңдау мүмкіндігі. Екіншіден, әртүрлі ПЭ өзара қатынасы кезінде шекаралық тораптардың жылдам байланысы және тордағы орын ауыстырулардың кішігірім орта саны.
Екі торап арасындағы әрбір элементарлық байланыс – бұл деректерді берудің екі бірбағытталған каналдары, ол қарама-қарсы бағыттарда деректерді бір мезгілде алмастыруға мүмкіндік туғызады. Cray T3E-1200Е моделінде тораптар арасындағы деректерді жіберудің максимал жылдамдығы 480 Мбайт/с, аппараура деңгейіндегі латенттігі 1 мкс көп емес.
Коммуникациялық желі Х, У, Z бағыттарындағы тораптардың желілік маршрутизаторларын жалғастыратын үшөлшемді торды құрайды. Екі А және В тораптары арасындағы деректермен алмасу үшін маршрут таңдау келесі түрде жүргізіледі. А төбесінен шыға отырып кезектегі транзиттік торап пен В төбесінің координатасы Х өлшемі бойынша қашан теңескенше, желілік мапшрутизаторлар алғашында Х өлшемі бойынша ығысуды орындайды. Онан кейін осындай процедура У бойынша, соңында Z бойынша орындалады (32 сурет). Ығысу оң да теріс те бола алатындықтан, бұл механизм желі бойынша орын ауыстырулар санын минимумдауға және бұзылған байланыстарды айналып өтуге көмектеседі. Желілік маршрутизаторлар әрбір үш өлшем Х, У, Z бойынша деректерді бір мезгілде параллель тасымалдауға болатындай етіп жобаланған.
Компьютер архитектурасындағы қызықты ерекшеліктердің бірі барьерлік синхрондауды аппаратық қолдау болып табылады. Барьер – ол бағдарламадағы нүкте, әрбір процесс осы нүктеге жетісімен, қашан қалған процесстер осы барьерге жеткенінше күтуі тиіс. Сонан кейін ғана, яғни барлық процестер барьерге жеткенде ғана процесстердің бәрі жұмыстарын ары қарай жалғастыра алады. Синхрондаудың бұл түрі бағдарламаларда жиі пайдаланылады, бірақ оны бағдарламалау жүйесінің құралдарымен іске асыру үлкен шығындарға алып келеді. Ал аппаратурада барьерлерді қолдау бұл шығындарды минимумдауға мүмкіндік береді.
Әрбір ПЭ колдау схемаларында бірнеше кіріс және шығыс синхрондау регистрлері қарастырылған. Бұл регистрлердің әрбір разряды барьерді іске асыратын өзінің тәуелсіз өрімдерімен жалғастырылған. Синхрондаудың барлық өрімі бірдей, ал олардың жалпы саны компьютердің конфигурациясына байланысты. Әрбір өрім құрылғының екі типі негізінде екілік ағаш қағидасы бойынша тұрғызылады (31 сурет). Бір құрылғылар логикалық көбейтуді (&) іске асырса, басқалары кірісті өзінің екі шығысына («1-2») қайталауды орындайды. Соңғы құрылғының шығысы (&) бірінші қайталау құрылғысының «1-2» кірісі болады. Қайталау құрылғысы алынған мәндерді өз өрімімен барлық ПЭ таратып және оларды шығыс регистрінің сәйкес разрядына жазып отырады.
31 Сурет. Cray т3d/t3e компьютерлеріндегі барьерлі синхрондау
Бір өрімнің жұмысын қарастырайық. Алғашқыда әрбір ПЭ кіріс және шығыс регистрінің сәйкес разряды нөлге тең. Процессорлық элементтің шығыс разрядында «бірдің» пайда болуы барлық процесстердің барьерге жеткендігінің белгісін береді. Процесс барьерге жетісімен сәйкес ПЭ кіріс регистрінің разряды бірге өзгертіледі. Кезкелген құрылғының шығысында (&) «бір» тек сол жағдайда ғана пайда болады, егер екі кірісте де бірлік болса. Егер қандай да бір процесс әлі барьерге жетпесе, онда осы ПЭ кірісіндегі нөл логикалық көбейту құрылғыларының өрімімен өтеді және соңғы құрылғының (&) шығысында нөлді анықтайды. Бұдан шығары: әрбір ПЭ шығыс разрядтарында да нөлдер болады. Соңғы процесс қалай өзінің кіріс разрядына бірді жазса, солай соңғы құрылғының (&) шығысында бірлік пайда болады және қайталау құрылғылары өрімімен әрбір ПЭ шығыс разрядтарына жеткізіледі. Шығыс разрядының мәні бойынша әрбір процесс қалған барлық процесстердің барьерлік синхрондау нүктесіне жеткенін біледі.
Қарастырылып жатқан компьютерлерде бұл өрімдер басқаша да пайдаланылады. Егер схемада барлық логикалық көбейту құрылғыларын логикалық қосу құрылғыларымен алмастыратын болсақ, онда «Эврика» механизмін іске асыратын өрім алынады. Кезкелген логикалық қосу құрылғысының шығысында «бір» сол жағдайда пайда болады, егер бір оның кірісінің кемінде қандай да біреуінде бар болса ғана. Яғни, қалай бір ПЭ өзінің кіріс регистріне бірді жазып алса, берілген ПЭ қандай да оқиғаның орын алғанын білдіріп, бұл бір барлық ПЭ таратылады. Бұл қарастырылған механизмнің қолданылу аймағының бірі – іздеу есептері.
Cray T3E немесе IBM SP типті дәстүрлі суперкомпьютерлерден басқа, таратылған жадылы компьютерлер класы соңғы жылдары есептеу кластерлері есебінен белсенді түрде кеңеюде. Айта кету керек, компьютерлік әдебиетте «кластер» ұғымы әртүрлі мағынады қолданылады. Мысалы, «кластерлік» технология деректер базасы серверлерінің немесе Web-серверлер сенімділігі және олардың жұмыс істеу жылдамдығын арттыру үшін пайдаланылады. Бұл жерде біз есептеу сипатындағы есептерді шешуге бағытталған кластерлер туралы айтатын боламыз.
Классикалық суперкомпьютерлер әрқашанда өздерінің үлкен өлшемдерімен, жоғары өнімділіктерімен, үлкен жадысымен және де өте қымбат бағаларымен ерекшеленеді. Әрине, бұл түсінікті де, керемет бірегей шешімдер мен рекордтты көрсеткіштерге ие бұл машиналар арзан тұруы мүмкін емес те. Бірақ-та, соңғы уақыттағы электроникадағы прогресс айтарлықтай өзгерістер енгізуде. Өткен ғасырдың 90-шы жылдары әлем рыногында қымбат емес және өте тиімді микропроцессорлар мен коммуникациялық шешімдер пайда болды. Жаппай өндірістің құрамдас бөліктерінен суперкомпьютерлерді құрастырудың нақты мүмкіндіктері ұсынылды. Бұл өз кезегінде, параллель компьютерлердің дамуындағы жеке бағыттардың бірі болатын кластерлік есептеу жүйелерінің өмірге келуіне септігін тигізді.
Қысқаша айтар болсақ, есептеу кластері дегеніміз бір есепті шешуге арналған қандай да бір желі аймағында біріктірілген компьютерлер жиыны (32 сурет). Әдетте есептеу тораптары ретінде рынокта қолжетімді бірпроцессорлы компьютерлер, екі немесе төрт процессорлы SMP-серверлері пайдаланылады. Әрбір торап операциялық жүйенің өз көшірмесінің басқаруымен жұмыс істейді. Мұндай операциялық жүйелер ретінде көбіне стандартты ОЖ: Linux, Windows NT, Solaris және т.б. пайдаланылды. Тораптардың құрамы және қуаты бір кластер аймағында да өзгеруі мүмкін, ал ол біртекті емес жүйелерді құрастыруға мүмкіндік береді. Нақты коммуникациялық ортаны таңдау көптеген факторлармен анықталады: шешілетін есептер класының ерекшеліктері, қаржылық қолжетімділік, кластердің одан ары кеңейтілу қажеттілігінің туындауы және т.б. Кластер конфигурациясына арнайы компьютерлерді, мысалы, файл-серверді енгізу мүмкіндігі бар. Әрине, Интернет арқылы кластерге қашықтан қатынас мүмкіндігі де ескерілген.