- •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 функциялары
37 Сурет. Матрицаларды көбейту графы
Алгоритм графы жеткілікті дәрежеде қарапайым тұрғызылған. Ол n² өз ара байланыспаған подграфтарға ыдырайды. Әрбір подграф к осіне паралллель орналасқан бір жолды көрсетеді және n төбеден тұрады. Күткеніміздей, (2.4) және (2.5) жазбаларындағы анық көрсетілген сол параллельділік осы графта да көрсетілген. Алгоритм графы n = 2 үшін 37, а суретте келтірілген. Толық графта мәліметтерді көптеп жіберу кездеседі.
bik элементтері координаталарының мәндері i, k болатын барлық төбелерге, ал сkj - координаталарының мәндері k, j болатын барлық төбелерге жіберіледі. n = 2 үшін бұл таратылым 37, б-суретте келтірілген. Графтың барлық төбелері a+bс түріндегі операцияларға сәйкес келеді. Бірақ k = 1 болғанда олар k ≠ 1 қарағанда бірсыпыра басқаша орындалады. Осы жағдайда а аргументі қандайда бір операцияның нәтижесі болмайды, ал әрқашанда 0-ге тең деп алынады. k = 1 болғанда 0-ді алгоритмнің кіріс дерегі деп алып, оны барлық төбелерге таратылуына еш кедергі болмайды.
Бұл мысал алгоритм графы төбелерін орналастырудың дұрыс тәсілін таңдаудың қаншалықты маңызды екенін жақсы көрсетеді. Егер, мысалы, төбелерді түзу сызық бойына орналастырса және олар (2.5)-гі i, j, к индекстерімен ешқандай байланыссыз болса, онда бұндай графта параллельділікті байқау сірә мүмкін емес те болар. Төбелердің таңдалған орналастырылуы бойынша паралллельділік айқын. Олай болса кезкелген паралллель форманың кезкелген ярусын (қабатын) жеңіл көрсетуге болады. Бұл дегеніміз бекітілген i, j кезінде бір төбеден артық кірмейтін төбелер жиыны. Канондық параллель форманың ярустары k = const гипержазықтығында жататын төбелер жиынын құрайды. Сондықтан, төбелерді орналастыру тәсілін алгоритмнің жазылуында пайдаланылатын индекстер жүйесімен байланыстыруға тура келетіні айқын. Берілген, яғни матрицаларды көбейту мысалы мұндай тәуелділікті анық көрсетіп тұр.
Егер (2.4) өрнегіндегі қосындыны екіеселену схемасы бойынша орындайтын болсақ, онда алгоритм графы мүлдем бөлек болатынын байқаймыз. Бұл жағдайда 37, а – суретіндегі графтың әрбір жолы, 36 - суреттегі төменгі графқа ауыстырылуы керек. Енді жаңа графты үш өлшемді кеңістікте орналастыру қиындау болады. Екіеселену қағидасын қолданып (бір индексті пайдаланып) қосындыны жазу да айтарлықтай қиыншылықтар туғызады.
2 мысал. Енді Аx=b түріндегі сызықты алгебралық теңдеулер жүйесін кері қою әдісі көмегімен шешу жолын қарастырайық. Мұндағы А реті n үшбұрышты анықтауышы нөлге тең емес квадрат матрица. aij, bi, xi арқылы сәйкесінше матрицаның элементтерін, жүйенің оң жағын және шешім-векторын белгілейміз. Түсінікті болу үшін А матрицасын диагоналдық элементтері 1-ге тең сол жақ үшбұрышты деп алайық. Онда
(2.6)
Қосу реті анықталмағандықтан, бұл өрнек те алгоритмді бірмәнді анықтамайды. Мысалға, j индексінің өсуіне қарай тізбекті қосуды қарастырайық. Сәйкес алгоритмді келесі түрде жазуға болады
(2.7)
Алгоритмнің ең негізгі операциясы a-bс түрінде берілген. Бұл барлық мүмкін болатын i, j индекстерінің мәндері үшін орындалады. Қалған операциялардың барлығы меншіктеуді орындайды. Мұнда да алгоритм графын тұрғызу кезінде операцияларды қарапайым қайта нөмірлеу тиімсіз екені көрінеді. Декарттық координат жүйесінде (i, j өстерімен) қадамы 1-ге тең болатын тікбұрышты координаталық торды тұрғызайық және тор тораптарына (түйіндеріне) a-bс операцияларына сәйкес келетін 2 ≤ i ≤ n, 1 ≤ j ≤ i-1 үшін граф төбелерін орналастырайық. Операциялар арасындағы байланысты талдай отыра, алгоритм графын тұрғызамыз және оған кіріс aij және bi, деректерін білдіретін төбелерді енгіземіз. Бұл граф n=5 жағдайы үшін 38, а - суретте көрсетілген. Жоғарғы бұрыштағы төбе i=1, j=0 координаталы нүктесінде орналасқан.
