GCC-yə paralel tərtib prosesi üçün dəstək əlavə etmək üçün layihə

Tədqiqat layihəsinin bir hissəsi kimi Paralel GCC GCC-yə kompilyasiya prosesini bir neçə paralel mövzuya bölməyə imkan verən funksiyanın əlavə edilməsi üzərində iş başlanmışdır. Hal-hazırda, çox nüvəli sistemlərdə qurma sürətini yaxşılaşdırmaq üçün make utiliti hər biri ayrıca kod faylı yaradan ayrıca kompilyator proseslərindən istifadə edir. Yeni layihə çoxnüvəli sistemlərdə performansı potensial olaraq yaxşılaşdıracaq kompilyator səviyyəsində paralelləşdirməni təmin etməklə sınaqdan keçirilir.

Test üçün hazırlanmışdır yeni "-param=num-threads=N" parametrinin təklif edildiyi mövzuların sayını təyin etmək üçün GCC-nin ayrıca paralelləşdirici qolu. İlkin mərhələdə prosedurlararası optimallaşdırmalar hər bir funksiya üçün siklik olaraq çağırılan və paralelləşdirməyə yaxşı kömək edən ayrı icra tellərinə köçürülür. GIMPLE əməliyyatları funksiyaların bir-biri ilə qarşılıqlı əlaqəsini qiymətləndirən aparatdan asılı olmayan optimallaşdırmalara cavabdeh olan ayrı-ayrı mövzularda yerləşdirilir.

Növbəti mərhələdə, həmçinin aparat platformasının xüsusiyyətlərini nəzərə alaraq prosedurlararası RTL optimallaşdırmalarının ayrı-ayrı mövzulara köçürülməsi planlaşdırılır. Bundan sonra çağırışın xüsusiyyətlərindən asılı olmayaraq funksiya daxilində koda tətbiq edilən prosedurdaxili optimallaşdırmaların (IPA) paralelləşdirilməsinin həyata keçirilməsi planlaşdırılır. İndiyə qədər məhdudlaşdırıcı əlaqə çox yivli rejimdə işləyərkən zibil toplama əməliyyatlarını qeyri-aktiv edən qlobal kilidə malik olan zibil toplayıcısıdır (gələcəkdə zibil kollektoru GCC multithreading üçün uyğunlaşdırılacaq).

Performansdakı dəyişikliyi qiymətləndirmək üçün 100 mindən çox kod sətirini və 1700 funksiyanı özündə birləşdirən gimple-match.c faylını quran test paketi hazırlanmışdır. 5 fiziki nüvəyə və 8250 virtual nüvəyə (Hyperthreading) malik Intel Core i4-8U CPU-lu sistemdə aparılan sınaqlar, 7 başlıq işə salındıqda GIMPLEdaxili optimallaşdırmaların icra müddətinin 4-dən 2 saniyəyə qədər azaldığını göstərdi. 3 mövzunun başlanğıcı, yəni. nəzərdən keçirilən montaj mərhələsinin sürətinin müvafiq olaraq 4 və 1.72 dəfə artmasına nail olundu. Testlər həmçinin göstərdi ki, Hyperthreading ilə virtual nüvələrdən istifadə performans artımına səbəb olmur.

GCC-yə paralel tərtib prosesi üçün dəstək əlavə etmək üçün layihə

Ümumi tikinti müddəti təxminən 10% azaldılıb, lakin RTL optimallaşdırmalarının paralelləşdirilməsinin daha nəzərəçarpacaq nəticələr əldə edəcəyi proqnozlaşdırılır, çünki bu mərhələnin tərtib edilməsi xeyli uzun çəkir. Təxminən RTL paralelləşdirməsindən sonra ümumi montaj vaxtı 1.61 dəfə azalacaq. Bundan sonra IPA optimallaşdırmalarının paralelləşdirilməsi hesabına tikinti müddətini daha 5-10% azaltmaq mümkün olacaq.

GCC-yə paralel tərtib prosesi üçün dəstək əlavə etmək üçün layihə

Mənbə: opennet.ru

Добавить комментарий