
- •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 функциялары
33 Сурет. Мвс-1000м суперкомпьютерінің құрылымы
Кластерлерді тұрғызудың коммуникациялық технологиялары
Кластерлі трғызудың әртүрлі нұсқалары өте көп. Олардың арасындағы елеулі өзгешіліктің бірі пайдаланылатын желілік технологияда жатыр, ал оны таңдау алдымен қойылған есептердің класымен анықталады.
Алғашқыда Beowulf-кластерлері әдеттегі 10-мегабиттік Ethernet желісі базасында тұрғызылды. Қазіргі күні коммутаторлар базасында Fast Ethernet желісі пайдаланылады. Бұндай шешімнің негізгі құндылығы – төмен баға. Сонымен қатар, Fast Ethernet шеңберінде хабарлама жіберуге үлкен қосымша шығындардың болуы, осындай кластерлерде тиімді шешілетін есептер аумағын қатаң шектеулерге алып келеді. Егер кластерден жоғары әмбебаптылық талап етілсе, онда басқа өнімділігі жоғары және арнайы коммуникациялық технологияларды пайдалану керек.
Кластерлік жүйелерді құрастырушылар баға, өнімділік және масштабталу ұғымдарын ескере отырып Fast Ethernet, Gigabit Ethernet, SCI, Myrinet, cLAN, ServerNet және т.б. желілік технологиялар арасынан таңдау жасайды. Коммуникациялық технологиялар және олардың негізгі параметрлері туралы толық мәліметті, мысалы, http://www.Parallel.ru сайтынан табуға болады.
Кластерлі жүйелерде, коммуникациялық желілердің өнімділігі қандай сандық сипаттамалармен өрнектелетініне тоқталайық. Пайдаланушыға қажетті негізгі екі сипаттама бар: латенттік және желінің жіберу (өткізу) қабілеттілігі. Латенттілік - бұл хабарламаларды жіберу кезіндегі бастапқы бөгелу уақыты. Желінің жіберу (өткізу) қабілеті байланыс каналдары бойынша ақпаратты жіберу(өтізу) жылдамдығымен анықталады (34 сурет).
Егер бағдарламада кішкене хабарламалар көп болса, онда латенттілік қатты өзгерістерге ұшырайды. Егер хабарламалар үлкен порциялармен берілетін болса, онда байланыс каналдарының өткізу қабілетінің жоғары болуы маңызды. Латенттілік әсерінен шағын ұзындықты хабарламаларда желі бойынша жіберудің максималды жылдамдығы қамтамасыз етілмеуі мүмкін.
34 Сурет. Коммуникациялық ортаның латенттілігі және өткізу қабілеті
Әрине, пайдаланушыға өндірушілердің айтқан (ұсынылатын) шектік сипаттамалары емес, тәжірибе жүзінде (бағдарламаларды орындау барысында) жетуге болатын нақты көрсеткіштері маңызды. Пайдаланушы хабарламаны жіберу функциясын Send() шақырғаннан кейін, хабарлама бағдарламалық қамтама және аппаратураны ұйымдастыру ерекшеліктерімен анықталатын қабаттар жиыны арқылы өтеді. Осымен, дербес жағдайда нақты жүйелердің латенттілігі анықталады. Мысалы, компьютерде MPI дұрыс орнатылмаса немесе нашар орнатылса, латенттілік үлкен болады, белгісіз таныс емес өндірушілерден арзан желілік карта сатып алып орнатсаңыз да сюрприздерді күте беріңіз деген сөз.
Енді параграфтың соңында таратылған жадылы есептеу жүйелерінің нақты бағдарламаларды орындау кезінде өнімділігін төмендететін факторларға көңіл аударайық.
Амдал заңынан бастайық. Таратылған жадылы компьютерлер үшін ол өте үлкен роль атқарады. Шындығында, егер бағдарламада тек 2% ғана тізбекті орындалатын операциялар бар дер есептесек, онда бағдарлама жұмысының 50-еселік және одан жоғары үдеу алатынына әрине сенімділік жоқ. Енді өз бағдарламамызға критикалық көзбен қарап көрелік. Әрине онда инициалдау, енгізу/шығару операциялары қандай да бір тізбекті учаскілер бар болары анық. Олардың үлесін тұтас бағдарлама фонында бағалап, бір сәтке 1000 процессордан тұратын есептеу жүйесіне рұқсат алдық деп есептейік. Осындай жүйеде бағдарлама үдеуі үшін жоғарғы шекарасын есептегеннен кейін, Амдал заңының әсерін бағаламауға ешқандай негіз жоқ.
Таратылған жадылы компьютерлерде процессорлар арасындағы ара-қатынас хабарлама жіберу көмегімен жүргізіледі. Бұдан екі басқа төмендететін факторлар – латенттілік және коммуникациялық орта каналдарымен деректерді беру жылдамдығы шығады. Бағдарламаның коммуникациялық құрылымына байланысты бұл факторлардың әсер ету дәрежесі қатты өзгеруі мүмкін.
Егер аппаратура немесе бағдарламалық қамтама есептеу фонында хабарламаны асинхронды жіберу мүмкіндіктерін қолдамаса, онда параллель процестердің ара-қатынасының толық аяқталуын күтуге байланысты шарасыз қосымша шығындар пайда болады.
Тиімді параллель өңдеуге қол жеткізу үшін, барлық процессорлардың максималды бірқалыпты жүктелуін қамтамасыз етуіміз қажет. Егер бірқалыптылық болмаса, онда процессорлардың бір бөлігі басқаларын күтіп шарасыздан тұрып қалады. Әрине, осы уақытта олардың күтуден гөрі пайдалы жұмыс істеуге толық мүмкіндіктері бар. Егер есептеу жүйесі біртекті болса бұл проблеманың оңай шешілері анық. Біртекті емес жүйелерге көшу кезінде, олардағы есептеу тораптары немесе байланыс каналдары арасындағы айтарлықтай айырмашылық салдарынан өте үлкен қиыншылықтар туындайды.
Маңызды фактор – бұл есептеу жүйесіндегі жеке процессордың нақты өнімділігі. Микропроцессорлардың әртүрлі моделдері кэш-жадының бірнеше деңгейіне қолдау көрсетуі және оларда арнайы функционалды құрылғылардың және т.б бар болуы мүмкін. Мысал ретінде Cray T3E компьютерінің жадысының иерархиясын алып көрелік: процессор регистрлері, 1-ші деңгейлі кэш-жады, 2-ші деңгейлі кэш-жады, процессордың жергілікті жадысы, басқа процессордың қашықтағы жадысы. Есепті шешу тәсілін таңдаған кезде мұндай құрылымды тиімді пайдалану ерекше көңіл бөлуді талап етеді.
Сонымен қатар, әрбір микропроцессорда қосымша векторлы-конвейерлік архитектура элементтері де болуы мүмкін.
Өкінішке орай, әрбір нақты бағдарламаның жұмысына қандай да бір дәрежеде осы айтылған факторлардың бәрі әсерін тигізеді. Таратылған жадылы компьютерлер класының потенциалы өте орасан, олардың көмегімен өте көп жетістіктерге жетуге болады. Әрине ол үшін айтарлықтай күш жұмсау қажет екені түсінікті. Әрбір есепті шешудің барлық этаптарын, яғни есептеу әдісін таңдаудан бастап бағдарламаны жазуға дейін өте мұқият дайындап, ойланып іске асыру керек.
Соңғы нүкте – Интернет. Интернетті де әлемдегі ең қуатты таратылған жадылы компьютер ретінде қарастыруға болады.
Сұрақтар мен тапсырмалар
Жеке процессордың құрылымы (структура) қандай?
Коммуникациялық ортаның құрылымы
Желінің өткізу қабілеті дегенді қалай түсінесіз?
Процессор жұмысының жылдамдығы және желінің өткізу қабілетінің арасындағы қатынас?
Латенттілік деп нені айтамыз?
Кластер дегеніміз не?
Тор500 тізімінің ағымдағы редакциясына қанша кластерлік жүйе енгізілген және олар қай орындарды иеленеді?
Тор500 тізімінің соңғы редакциясындағы компьютерлердің қаншауында 1000 нан аса процессор бар? Олардың ішінде қаншауы таратылған жадылы?
Бір кластерде бірнеше әртүрлі желілік технологияларды пайдаланудың мағынасы бар ма?
Бір кластерде ондағы есептеу тораптары әртүрлі операциялық жүйелер басқаруымен жұмыс істей алады ма?
«Кластердің масштабталуы» сөзін қалай түсінесіз?
Есептеу кластерлерін дәстүрлі суперкомпьютерлермен салыстырып әлсіз тұстарын атаңыз?