Ғылыми жобаның бөлігі ретінде
Тестілеу үшін
Келесі кезеңде сонымен қатар аппараттық платформаның сипаттамаларын ескере отырып, процедурааралық RTL оңтайландыруларын бөлек ағындарға жылжыту жоспарлануда. Осыдан кейін біз шақыру ерекшеліктеріне қарамастан функцияның ішіндегі кодқа қолданылатын процедураішілік оңтайландыруларды (IPA) параллелизациялауды жүзеге асыруды жоспарлап отырмыз. Қазіргі уақытта шектеуші сілтеме көп ағынды режимде жұмыс істегенде қоқыс жинау операцияларын өшіретін жаһандық құлыпты қосқан қоқыс жинағыш болып табылады (болашақта қоқыс жинағыш GCC көп ағынды орындауға бейімделеді).
Өнімділіктегі өзгерістерді бағалау үшін 100 мыңнан астам код жолын және 1700 функцияны қамтитын gimple-match.c файлын жинайтын сынақ жинағы дайындалды. 5 физикалық ядросы және 8250 виртуалды (Hyperthreading) бар Intel Core i4-8U процессоры бар жүйедегі сынақтар 7 ағынды іске қосқанда 4-ден 2 секундқа дейін және 3 іске қосу кезінде 4 секундқа дейін процедураішілік GIMPLE оңтайландыруларының орындалу уақытының азайғанын көрсетті. жіптер, яғни. Қарастырылып отырған құрастыру кезеңінің жылдамдығының артуы тиісінше 1.72 және 2.52 есеге қол жеткізілді. Сондай-ақ сынақтар Hyperthreading көмегімен виртуалды ядроларды пайдалану өнімділіктің жоғарылауына әкелмейтінін көрсетті.
Жалпы құрастыру уақыты шамамен 10%-ға қысқарды, бірақ болжамдарға сәйкес, RTL оңтайландыруларын параллельдеу нақты нәтижелерге қол жеткізуге мүмкіндік береді, өйткені бұл кезең құрастыру кезінде айтарлықтай көп уақытты алады. Шамамен RTL параллелизациясынан кейін жалпы жинау уақыты 1.61 есе қысқарады. Осыдан кейін IPA оңтайландыруларын параллельдеу арқылы құрастыру уақытын тағы 5-10%-ға қысқартуға болады.
Ақпарат көзі: opennet.ru