Пројекат за додавање подршке за паралелизацију процеса компилације у ГЦЦ

У оквиру истраживачког пројекта Паралелни ГЦЦ Почео је рад на додавању функције ГЦЦ-у која омогућава да се процес компилације подели на неколико паралелних нити. Тренутно, да би се побољшала брзина изградње на системима са више језгара, услужни програм маке користи покретање одвојених процеса компајлера, од којих сваки прави засебну датотеку кода. Нови пројекат експериментише са обезбеђивањем паралелизације на нивоу компајлера, што ће потенцијално побољшати перформансе на системима са више језгара.

За тестирање припремљен засебна грана за паралелизацију ГЦЦ-а, која нуди нови параметар „—парам=нум-тхреадс=Н“ за подешавање броја нити. У почетној фази имплементирали смо трансфер међупроцедуралних оптимизација у засебне нити, које се за сваку функцију позивају циклично и лако се могу паралелизирати. ГИМПЛЕ операције одговорне за хардверски независне оптимизације које процењују међусобну интеракцију функција смештене су у засебне нити.

У следећој фази планирано је и премештање међупроцедуралних РТЛ оптимизација у засебне нити, узимајући у обзир карактеристике хардверске платформе. Након тога планирамо да имплементирамо паралелизацију интрапроцедуралних оптимизација (ИПА) примењених на код унутар функције, без обзира на специфичности позива. Ограничујућа веза за сада је сакупљач смећа, који је додао глобално закључавање које онемогућава операције сакупљања смећа док ради у вишенитном режиму (у будућности ће сакупљач смећа бити прилагођен за вишенитно извршавање ГЦЦ-а).

Да би се процениле промене у перформансама, припремљен је тест пакет који саставља датотеку гимпле-матцх.ц, која укључује више од 100 хиљада линија кода и 1700 функција. Тестови на систему са Интел Цоре и5-8250У ЦПУ-ом са 4 физичка језгра и 8 виртуелних (Хипертхреадинг) показали су смањење времена извршавања Интра Процедурал ГИМПЛЕ оптимизације са 7 на 4 секунде када се покреће 2 нити и на 3 секунде када се покреће 4 нити, тј. Повећање брзине разматране фазе монтаже постигнуто је за 1.72 и 2.52 пута, респективно. Тестови су такође показали да коришћење виртуелних језгара са Хипертхреадинг-ом не доводи до повећања перформанси.

Пројекат за додавање подршке за паралелизацију процеса компилације у ГЦЦ

Укупно време изградње је смањено за приближно 10%, али према предвиђањима, паралелизовање РТЛ оптимизације ће омогућити постизање опипљивијих резултата, јер је за ову фазу потребно знатно више времена током компилације. Приближно након РТЛ паралелизације, укупно време склапања ће се смањити за 1.61 пута. Након овога, биће могуће смањити време изградње за још 5-10% паралелизовањем ИПА оптимизација.

Пројекат за додавање подршке за паралелизацију процеса компилације у ГЦЦ

Извор: опеннет.ру

Додај коментар