Cray C90 компьютерінің шектік өнімділігі Компьютер архитектурасын біле отырып, оның шектік өнімділігін жеңіл есептеуге болады. Алдымен бізді, нақты сандар мен операциялар орындаудың жылдамдығы қызықтыратын болғандықтан, нақты арифметикаға арналған функционалдық құрылғыларды максималды жүктеу қажет. Кері шаманы табу операциясы сирек қолданылады, ал бөлу операциясын орындауда оған қосымша көбейту операциясы талап етіледі. Сондықтан компьютердің шектік өнімділігін анықтау үшін тек қана қосу және көбейту құрылғыларын іске араластырамыз. Максимал өнімділік алу үшін бұл құрылғыларды ілінісу режимінде пайдалану қажет. Алдыңғы параграфта, Ai=Bi+Ci*d операциясын іске асыру барысында, біз, дәл осылай жасаған болатынбыз. Егер әрбір осындай құрылғы, векторлық операцияны орындау үшін екі ішкі конвейерлерді пайдаланатынын қосымша ескеретін болсақ, онда екі құрылғыдан тұратын жүйе бір тактіде төрт операцияның нәтижесін беретін болады. Компьютердің такті уақыты 4,1 нс тең, сондықтан Cray C90 компьютерінің бір процессорының шектік өнімділігі шамамен 1 81. Гфлопс немесе секундына 109 операцияны құрайды. Егер бір мезгілде барлық 16 процессор жұмыс істеп тұр деп есептесек, онда шектік өнімділік 16 гфлопс-қа дейін артады.
Сонымен біз қарастырылып жатқан компьютердің негізгі ерекшеліктерін талдап, одан не себепті оның соншалықты тез есептейтінін түсіндік. Бірақ ол үшін қалай тиімді бағдарламаларды жазу керек екендігін түсіну үшін оның басқа жағын да оқып үйрену керек. Нақты бағдарламаларда оның өнімділігін азайтатын факторларды бөліп қарастыру керек. Бізге бұл қадамды жасамасақ, өнімділікті арттыру үшін бағдарламада нені өзгерту керек екенін түсіну қиын болады. Бұдан ары, бағдарламаның орындалу тиімділігін талдауға көңіл бөлейік.
Бірінші бізге терминологияны анықтап алу керек. Компьютердің архитектурасы векторлы-конвейерлі. Өңдеудің векторлық режимін пайдалану есебінен уақыттан ұтуға қол жеткізіледі. Бағдарламаның жекелеген фрагменті векторлық режимде өңделуі мүмкін, егер оның орындалуы үшін компьютердің командалар жүйесінің векторлық командаларын пайдалану мүмкін болса. Егер бағдарламаның барлық фрагменттерін векторлық командалармен ауыстыру мүмкіндігі туса, онда оның толық векторлануы туралы айтуға болады. Кері жағдайда біз бөлшекті векторлану немесе фрагментті векторлау мүмкін еместігіне келеміз.
Бағдарламадағы векторлануы мүмкін фрагменттерді іздеу және оларды векторлық командалармен ауыстыру процесі бағдарламаның векторлануы деп аталады. Векторланған фрагментке мысал:
DO i=1, n
C(i) = A(i) + B(i)
END DO
Бұл фрагмент үшін компилятор векторлық командалар тізбегін генерациялайды: жадыдағы А және В векторларын векторлық регистрлерге жүктеу, векторлық қосу операциясы, векторлық регистр мазмұнын жадыға жазу.