Оқулық Қазақстан Республикасы Білім және ғылым министрлігі бекіткен Алматы, 2011


Cray C90 компьютерінің шектік ӛнімділігі



Pdf көрінісі
бет47/121
Дата31.08.2022
өлшемі2,81 Mb.
#38343
түріОқулық
1   ...   43   44   45   46   47   48   49   50   ...   121
Байланысты:
duisembiev-parallel-esep

Cray C90 компьютерінің шектік ӛнімділігі 
Компьютер архитектурасын біле отырып, оның шектік ӛнімділігін 
жеңіл есептеуге болады. Алдымен бізді, нақты сандар мен операциялар 
орындаудың 
жылдамдығы 
қызықтыратын 
болғандықтан, 
нақты 
арифметикаға арналған функционалдық құрылғыларды максималды жүктеу 
қажет. Кері шаманы табу операциясы сирек қолданылады, ал бӛлу 
операциясын орындауда оған қосымша кӛбейту операциясы талап етіледі. 
Сондықтан компьютердің шектік ӛнімділігін анықтау үшін тек қана қосу 
және кӛбейту құрылғыларын іске араластырамыз. Максимал ӛнімділік алу 
үшін бұл құрылғыларды ілінісу режимінде пайдалану қажет. Алдыңғы 
параграфта, A
i
=B
i
+C
i
*d операциясын іске асыру барысында, біз, дәл осылай 
жасаған болатынбыз. Егер әрбір осындай құрылғы, векторлық операцияны 
орындау үшін екі ішкі конвейерлерді пайдаланатынын қосымша ескеретін 
болсақ, онда екі құрылғыдан тұратын жүйе бір тактіде тӛрт операцияның 
нәтижесін беретін болады. Компьютердің такті уақыты 4,1 нс тең, сондықтан 
Cray C90 компьютерінің бір процессорының шектік ӛнімділігі шамамен 1 


81 
Гфлопс немесе секундына 10
9
операцияны құрайды. Егер бір мезгілде барлық 
16 процессор жұмыс істеп тұр деп есептесек, онда шектік ӛнімділік 16 
гфлопс-қа дейін артады.
Сонымен 
біз 
қарастырылып 
жатқан 
компьютердің 
негізгі 
ерекшеліктерін талдап, одан не себепті оның соншалықты тез есептейтінін 
түсіндік. Бірақ ол үшін қалай тиімді бағдарламаларды жазу керек екендігін 
түсіну үшін оның басқа жағын да оқып үйрену керек. Нақты бағдарламаларда 
оның ӛнімділігін азайтатын факторларды бӛліп қарастыру керек. Бізге бұл 
қадамды жасамасақ, ӛнімділікті арттыру үшін бағдарламада нені ӛзгерту 
керек екенін түсіну қиын болады. Бұдан ары, бағдарламаның орындалу 
тиімділігін талдауға кӛңіл бӛлейік [9]. 
Бірінші бізге терминологияны анықтап алу керек. Компьютердің 
архитектурасы 
векторлы-конвейерлі. 
Ӛңдеудің 
векторлық 
режимін 
пайдалану есебінен уақыттан ұтуға қол жеткізіледі. Бағдарламаның 
жекелеген фрагменті векторлық режимде ӛңделуі мүмкін, егер оның 
орындалуы үшін компьютердің командалар жүйесінің векторлық 
командаларын пайдалану мүмкін болса. Егер бағдарламаның барлық 
фрагменттерін векторлық командалармен ауыстыру мүмкіндігі туса, онда 
оның толық векторлануы туралы айтуға болады. Кері жағдайда біз бӛлшекті 
векторлану немесе фрагментті векторлау мүмкін еместігіне келеміз.
Бағдарламадағы векторлануы мүмкін фрагменттерді іздеу және 
оларды векторлық командалармен ауыстыру процесі бағдарламаның 
векторлануы деп аталады.
Векторланған фрагментке мысал: 
DO i=1, n 
C(i) = A(i) + B(i) 
END DO 
Бұл фрагмент үшін компилятор векторлық командалар тізбегін 
генерациялайды: жадыдағы А және В векторларын векторлық регистрлерге 
жүктеу, векторлық қосу операциясы, векторлық регистр мазмұнын жадыға 
жазу.
Жоғарыда біз бағдарламадағы кезкелген фрагментті векторлау мүмкін 
бола бермейтінін айтқан болатынбыз. Векторлау үшін екі шарттың 
орындалуы қажет. Бірінші шарт вектор-аргументтердің бар болуы. Екінші 
шарт біраз күрделірек, вектордың барлық элементтеріне бірдей, тәуелсіз 
операциялар орындалуы керек және олар үшін компьютердің командалар 
жүйесінде осы сияқты векторлық командалар бар болуы қажет. Енгізілген 
түсініктерді тереңірек қарап кӛрелік. 
Вектор деп барлық элементтері компьютер жадысына бір-біріне 
қарағанда бірдей ығыса орналастырылған біртекті (біртипті) деректердің 
реттелген жиынын айтамыз. Бағдарламалардағы векторлардың қарапайым 
мысалы ретінде бірӛлшемді массивтерді алуға болады. Келесі мысал 


82 
матрицаның жолдары мен бағандары. Fortran бағдарламалау тілі үшін 
матрицаның бір бағанының кӛрші элементтерінің арасындағы арақашықтық 
бірге тең, ал бір жолдағы кӛрші элементтерінің арақашықтығы матрица 
ӛлшеміне тең. С тілі үшін жолдар мен бағандар орындарымен ауысады. 
Шаршы матрицаның диагоналы да вектордың мысалы бола алады, себебі 
оның элементтерінің арақашықтығы бірдей және матрица ӛлшеміне бірді 
қосқанға тең. Тұтастай кӛпӛлшемді массивті де ұзындығы массивтің барлық 
ӛлшемдерінің кӛбейтіндісіне тең бір вектор деп санауға болады. Бұл тізімді 
ары қарай жалғастыра беруге болады, және деректердің регулярлық 
құрылымын пайдаланатын кезкелген бағдарламада векторлардың әртүрлі 
кӛптеген мысалдарын табуға болады.
Алайда, екіӛлшемді матрицаның барлық диагональ асты бӛлігі вектор 
бола алмайды. Себебі, бұл деректер жиыны элементтерінің ара-қашықтығы 
компьютер жадысында қандай да бір тұрақты сан түрінде берілмейді.
Векторланатын фрагментте вектордан басқа қарапайым айнымалылар 
да пайдаланылуы мүмкін. Мысал: 
DO i=1, n 
А(i) = В(i) + s 
END DO 
Фрагментті векторлау үшін негізгі кандидаттарына бағдарламаның 
барлық циклдік конструкциясының ең ішкі циклдары жатады. Олар дербес 
жағдайда векторлар болуы мүмкін деректердің «бірӛлшемді» жиынын береді. 
Бірақ, векторлармен жұмыс істеу әлі де векторлаудың жеткілікті шарты бола 
алмайды. Келесі мысалды қарастыралық: 
DO i=1, n 
А(i) = A(i-1) + B(i) 
END DO 
Мұнда, алдыңғы i – 1-ші элемент есептелмейінше А массивінің i-ші 
элементін есептеу басталмайды. Бұл жағдайда конвейерлік ӛңдеуді 
пайдалану ӛз мағынасын жоғалтады. Қашан нәтиже құрылғыдан 
шықпайынша, біз деректерді конвейердің бірінші сатысына жүктей 
алмаймыз. Қарастырылған мысалда векторлауға кедергі жасайтын 
операциялар арасындағы тәуелділік бар. Сондықтан да біз тәуелсіз және 
бірдей операциялар бар болатын шарт орындалғанда ғана векторлау мүмкін 
екені туралы айтқан болатынбыз.


Достарыңызбен бөлісу:
1   ...   43   44   45   46   47   48   49   50   ...   121




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет