Кіріспе

Орындау жылдамдығын арттыру және циклдармен байланысты қосымша шығындарды азайту – циклдарды компиляторлық оңтайландыру. Компилятор теориясында циклдарды оңтайландыру – орындау жылдамдығын арттыру және циклдармен байланысты қосымша шығындарды азайту процесі. Ол кэш жадтың тиімділігін арттыру және параллель өңдеу мүмкіндіктерін тиімді пайдалануда маңызды рөл атқарады. Ғылыми бағдарламаның орындалу уақытының басым бөлігі циклдарға жұмсалады; осы себепті, оларды жылдамдату үшін көптеген компиляторлық оңтайландыру техникалары жасалған.

Есептеулер мен түрлендірулерді бейнелеу

Цикл ішіндегі нұсқаулар қайталап орындалуы мүмкін болғандықтан, циклды оңтайландырудың қанша нұсқау орындалуына әсер ететініне шектеу қою жиі мүмкін емес. Бұл циклдық оңтайландырудың дұрыстығы және тиімділігін бағалау кезінде қиындықтар тудырады, әсіресе оңтайландырылып жатқан есептеудің көрсетілісі мен жүзеге асырылып жатқан оңтайландыруларға қатысты.

Модульді емес түрлендіру жүйесі

Бір модульді емес түрлендіру әдісі, жоғарыда аталған түрлендірулердің көптігінен туындаған біріктірілген нәтижені сипаттау үшін бір ғана бір модульді емес матрицаны пайдаланады. Бұл тәсілдің негізгі тұжырымы – n цикл ішіндегі мәлімдеменің барлық орындалуларын n өлшемді кеңістіктегі бүтін нүктелер жиыны ретінде қарастыру, мұнда нүктелер лексикографиялық тәртіппен орындалады. Мысалы, i индексі бар сыртқы циклдің және j индексі бар ішкі циклдің ішінде орналасқан оператордың орындалуы, (i, j) сандар жұбымен байланыстырылуы мүмкін. Бір модульді емес түрлендіруді қолдану, осы кеңістіктегі нүктелерді матрицаға көбейтуге сәйкес келеді. Мысалы, екі циклді алмастыру матрицаға сәйкес келеді. Бір модульді емес түрлендіру, егер ол барлық тәуелділіктердің уақыт бойынша реттілігін сақтаса, заңды болып саналады; бірақ, бір модульді емес түрлендірудің өнімділікке тигізетін әсерін өлшеу қиынырақ. Толық емес циклдар және кейбір түрлендірулер (мысалы, мозаикалау) осы аяға оңай сыймайды.

Полиэдрлік немесе шектеулерге негізделген жүйе

Полиэдрлік модель, унимодульдік құрылымға қарағанда, бағдарламалардың және түрлендірулердің кеңірек класын қамтиды. Мүмкін толық емес ұяланған циклдар жиынтығындағы нұсқаулар жиынтығының орындалу жиынтығы, нұсқаулардың орындалуын көрсететін политоптар жиынтығының бірігісі ретінде қарастырылады. Бұл политоптарға сызықтық түрлендірулер қолданылады, осы арқылы жаңа орындалу ретінің сипаттамасы жасалады. Политоптардың шекаралары, деректерге тәуелділіктері және түрлендірулер көбінесе шектеулер жүйесі арқылы сипатталады, ал бұл тәсіл циклдарды оңтайландыруға қатысты шектеулерге негізделген тәсіл деп аталады. Мысалы, сыртқы цикл '' және ішкі цикл '' ішіндегі бір ғана нұсқау, егер ол барлық тәуелділіктердің уақыт реттілігін сақтаса, әрбір жұп үшін бір рет орындалады. Түрлендірудің тиімділігін бағалау немесе белгілі бір компьютердегі белгілі бір код үшін ең жақсы түрлендіруді табу осы материал жазылған кезге дейін (2010 жыл) жалғасып жатқан зерттеулердің тақырыбы болып табылады.