Лоиҳа барои илова кардани дастгирӣ барои параллелизатсияи раванди тартибдиҳӣ ба GCC

Дар доираи лоиҳаи тадқиқотӣ GCC параллелӣ Кор барои илова кардани хусусият ба GCC оғоз шуд, ки имкон медиҳад раванди тартибдиҳӣ ба якчанд риштаҳои мувозӣ тақсим карда шавад. Дар айни замон, барои беҳтар кардани суръати сохтмон дар системаҳои бисёраслӣ, утилитаи make аз оғози равандҳои алоҳидаи компиляторӣ истифода мебарад, ки ҳар кадоми онҳо файли коди алоҳида месозад. Лоиҳаи нав пешниҳоди параллелизатсияро дар сатҳи компилятор таҷриба мекунад, ки эҳтимолан иҷрои корҳоро дар системаҳои бисёраслӣ беҳтар мекунад.

Барои санҷиш тайёр карда шудааст шохаи алоҳидаи параллелизатсияи GCC, ки параметри нави "-param=num-threads=N"-ро барои муқаррар кардани шумораи риштаҳо пешниҳод мекунад. Дар марҳилаи аввал, мо интиқоли оптимизатсияи байнипроцессуалиро ба риштаҳои алоҳида амалӣ кардем, ки барои ҳар як функсия ба таври даврӣ даъват карда мешаванд ва метавонанд ба осонӣ параллелизатсия шаванд. Амалиётҳои GIMPLE барои оптимизатсияи мустақили сахтафзор масъуланд, ки таъсири мутақобилаи функсияҳоро бо ҳамдигар арзёбӣ мекунанд, дар риштаҳои алоҳида ҷойгир карда шудаанд.

Дар марҳилаи навбатӣ инчунин бо назардошти хусусиятҳои платформаи сахтафзор интиқол додани оптимизатсияи байнипроцессуали RTL ба риштаҳои алоҳида ба нақша гирифта шудааст. Пас аз он, мо нақша дорем, ки параллелизатсияи оптимизатсияи дохилипроцессуалӣ (IPA), ки ба код дар дохили функсия татбиқ карда мешавад, новобаста аз хусусиятҳои занг. Истиноди маҳдудкунанда дар айни замон коллектори ахлот аст, ки қулфи глобалиро илова кардааст, ки амалиёти ҷамъоварии ахлотро ҳангоми кор дар реҷаи чанд ришта ғайрифаъол мекунад (дар оянда коллектори ахлот барои иҷрои чанд риштаи GCC мутобиқ карда мешавад).

Барои арзёбии тағирот дар иҷроиш, маҷмӯи санҷишӣ омода шудааст, ки файли gimple-match.c-ро ҷамъ мекунад, ки беш аз 100 ҳазор сатри код ва 1700 функсияро дар бар мегирад. Санҷишҳо дар система бо CPU-и Intel Core i5-8250U бо 4 ядрои физикӣ ва 8 виртуалӣ (Hyperthreading) нишон доданд, ки вақти иҷрои оптимизатсияҳои дохилии GIMPLE аз 7 то 4 сония ҳангоми иҷро кардани 2 ришта ва то 3 сония ҳангоми кор 4 риштаҳо, яъне. Афзоиши суръати марҳилаи монтажи мавриди назар мутаносибан 1.72 ва 2.52 баробар ба даст омад. Санҷишҳо инчунин нишон доданд, ки истифодаи ядроҳои маҷозӣ бо Hyperthreading ба баланд шудани кор оварда намерасонад.

Лоиҳа барои илова кардани дастгирӣ барои параллелизатсияи раванди тартибдиҳӣ ба GCC

Вақти умумии сохтмон тақрибан 10% кам карда шуд, аммо мувофиқи пешгӯиҳо, параллелизатсияи оптимизатсияи RTL имкон медиҳад, ки натиҷаҳои назаррас ба даст оранд, зеро ин марҳила ҳангоми тартибдиҳӣ вақти хеле зиёдтарро мегирад. Тақрибан пас аз параллелизатсияи RTL, вақти умумии васлкунӣ 1.61 маротиба кам карда мешавад. Пас аз ин, тавассути параллелизатсияи оптимизатсияи IPA вақти сохтмонро боз 5-10% кам кардан мумкин аст.

Лоиҳа барои илова кардани дастгирӣ барои параллелизатсияи раванди тартибдиҳӣ ба GCC

Манбаъ: opennet.ru

Илова Эзоҳ