Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Duisembiev-Parallel-esep.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
5.86 Mб
Скачать

26 Сурет. Cray c90 компьютерінде векторлық операциялардың орындалуы

Бұл жерде де ілінісудің негізгі тағайындалуы тағы да деректерді өңдеудің жылдамдығын арттыру болып табылады. Мысалы, бізге әрбір кірістік векторы n элементтен тұратын Ai=Bi+Ci*d түріндегі операцияны орындау қажет делік және де біздің қол астымызда, сәйкесінше, l1 және l2 баспалдақтан тұратын қосу және көбейту функционалдық құрылғылары болсын. Егер берілген операцияны дәстүрлі әдіспен орындайтын болсақ, яғни бірінші көбейту векторлық операциясын, сонан кейін қосу операциясын, онда барлық операция l1 + l2 +2* n – 2 тактіде іске асатын болады. Егер де осы операция үшін ілінісу режимі пайдаланылатын болса, онда негізінен ұзындығы l1 + l2 болатын бір конвейер алынады, онда барлық операцияны орындау уақыты да l1 + l2 + n – 1 –ге дейін қысқарады. Берілген кірістік вектор саны n үлкен болған жағдайда, операцияның орындалу уақыты дәстүрлі әдіспен салыстырғанда екі есеге дейін азаяды. Бұл ситуация сызба түрінде 27 – ші суретте көрсетілген.

27 Сурет. Cray c90 компьютерінде векторлық операциялардың ілінісуі

Процессорды басқару секциясы

Жедел жадыдан командалар блогымен таңдалынып командалар буферлеріне енгізіледі, одан кейін олардан орындалу үшін таңдалып алынады. Егер ағымдағы буферде орындау үшін қажетті команда жоқ болса, онда ол басқа буферлерден ізделінеді. Егер талап етілген команда буферлерден табылмаса, онда келесі блокты таңдау жүргізіледі.

Cray C90 компьютері архитектурасының негізі осындай. Көріп отырғанымыздай, параллель өңдеу идеяларының компьютер архитектурасының барлық құрамдас бөліктеріне әсері бар.

Сонымен, бағдарламалардың орындалуына едәуір үдеу беретін архитектураның негізгі ерекшеліктерінің ішінен келесілерді атауға болады:

  • Командаларды орындауды конвейерлеу. Процессор орындайтын барлық негізгі операциялар, яғни жадыға қатынау, командаларды өңдеу және фнкционалдық құрылғылардың инструкцияларды орындауы конвейерлік болып табылады;

  • Функционалдық құрылғылардың тәуелсіздігі. Cray C90 компьютерінің функционалдық құрылғылары бір-біріне тәуелсіз, сондықтан онда бірнеше операция бір мезгілде орындала алады;

  • Векторлық өңдеу. Тұтас деректер жиынын (векторды) өңдеу бір команда арқылы орындалатын болғандықтан, векторлық өңдеу, өңдеудің жылдамдығын және өңдеу тиімділігін арттырады. Векторлық режимде операцияны орындау жылдамдығы скалярлық өңдеу жылдамдығынан 10-15 есе жоғары болуы мүмкін;

  • Функционалдық құрылғылардың ілінісуі. «Макроконвейер» режимінде бірнеше векторлық операцияларды орындай алу мүмкіндігі, оларды өңдеу жылдамдығын арттыруда қосымша ұтыс береді.

  • Көппроцессорлық өңдеу. Максималды конфигурацияда компьютер құрамында тәуелсіз 16 процессорға дейін болуы және олар әртүрлі пайдаланылуы мүмкін. Дербес жағдайда олар бір-біріне тәуелсіз бірнеше бағдарламаларды орындай алуы немесе барлығы бір бағдарламаны орындауға бағытталуы мүмкін.

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

Компьютер архитектурасын біле отырып, оның шектік өнімділігін жеңіл есептеуге болады. Алдымен бізді, нақты сандар мен операциялар орындаудың жылдамдығы қызықтыратын болғандықтан, нақты арифметикаға арналған функционалдық құрылғыларды максималды жүктеу қажет. Кері шаманы табу операциясы сирек қолданылады, ал бөлу операциясын орындауда оған қосымша көбейту операциясы талап етіледі. Сондықтан компьютердің шектік өнімділігін анықтау үшін тек қана қосу және көбейту құрылғыларын іске араластырамыз. Максимал өнімділік алу үшін бұл құрылғыларды ілінісу режимінде пайдалану қажет. Алдыңғы параграфта, Ai=Bi+Ci*d операциясын іске асыру барысында, біз, дәл осылай жасаған болатынбыз. Егер әрбір осындай құрылғы, векторлық операцияны орындау үшін екі ішкі конвейерлерді пайдаланатынын қосымша ескеретін болсақ, онда екі құрылғыдан тұратын жүйе бір тактіде төрт операцияның нәтижесін беретін болады. Компьютердің такті уақыты 4,1 нс тең, сондықтан Cray C90 компьютерінің бір процессорының шектік өнімділігі шамамен 1 Гфлопс немесе секундына 109 операцияны құрайды. Егер бір мезгілде барлық 16 процессор жұмыс істеп тұр деп есептесек, онда шектік өнімділік 16 гфлопс-қа дейін артады.

Сонымен біз қарастырылып жатқан компьютердің негізгі ерекшеліктерін талдап, одан не себепті оның соншалықты тез есептейтінін түсіндік. Бірақ ол үшін қалай тиімді бағдарламаларды жазу керек екендігін түсіну үшін оның басқа жағын да оқып үйрену керек. Нақты бағдарламаларда оның өнімділігін азайтатын факторларды бөліп қарастыру керек. Бізге бұл қадамды жасамасақ, өнімділікті арттыру үшін бағдарламада нені өзгерту керек екенін түсіну қиын болады. Бұдан ары, бағдарламаның орындалу тиімділігін талдауға көңіл бөлейік [9].

Бірінші бізге терминологияны анықтап алу керек. Компьютердің архитектурасы векторлы-конвейерлі. Өңдеудің векторлық режимін пайдалану есебінен уақыттан ұтуға қол жеткізіледі. Бағдарламаның жекелеген фрагменті векторлық режимде өңделуі мүмкін, егер оның орындалуы үшін компьютердің командалар жүйесінің векторлық командаларын пайдалану мүмкін болса. Егер бағдарламаның барлық фрагменттерін векторлық командалармен ауыстыру мүмкіндігі туса, онда оның толық векторлануы туралы айтуға болады. Кері жағдайда біз бөлшекті векторлану немесе фрагментті векторлау мүмкін еместігіне келеміз.

Бағдарламадағы векторлануы мүмкін фрагменттерді іздеу және оларды векторлық командалармен ауыстыру процесі бағдарламаның векторлануы деп аталады.

Векторланған фрагментке мысал:

DO i=1, n

C(i) = A(i) + B(i)

END DO

Бұл фрагмент үшін компилятор векторлық командалар тізбегін генерациялайды: жадыдағы А және В векторларын векторлық регистрлерге жүктеу, векторлық қосу операциясы, векторлық регистр мазмұнын жадыға жазу.

Жоғарыда біз бағдарламадағы кезкелген фрагментті векторлау мүмкін бола бермейтінін айтқан болатынбыз. Векторлау үшін екі шарттың орындалуы қажет. Бірінші шарт вектор-аргументтердің бар болуы. Екінші шарт біраз күрделірек, вектордың барлық элементтеріне бірдей, тәуелсіз операциялар орындалуы керек және олар үшін компьютердің командалар жүйесінде осы сияқты векторлық командалар бар болуы қажет. Енгізілген түсініктерді тереңірек қарап көрелік.

Вектор деп барлық элементтері компьютер жадысына бір-біріне қарағанда бірдей ығыса орналастырылған біртекті (біртипті) деректердің реттелген жиынын айтамыз. Бағдарламалардағы векторлардың қарапайым мысалы ретінде бірөлшемді массивтерді алуға болады. Келесі мысал матрицаның жолдары мен бағандары. 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-ші элементін есептеу басталмайды. Бұл жағдайда конвейерлік өңдеуді пайдалану өз мағынасын жоғалтады. Қашан нәтиже құрылғыдан шықпайынша, біз деректерді конвейердің бірінші сатысына жүктей алмаймыз. Қарастырылған мысалда векторлауға кедергі жасайтын операциялар арасындағы тәуелділік бар. Сондықтан да біз тәуелсіз және бірдей операциялар бар болатын шарт орындалғанда ғана векторлау мүмкін екені туралы айтқан болатынбыз.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]