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