Bir araştırma projesinin parçası olarak
Test için
Bir sonraki aşamada, donanım platformunun özellikleri dikkate alınarak prosedürler arası RTL optimizasyonlarının ayrı iş parçacıklarına taşınması da planlanıyor. Bundan sonra, çağrının özelliklerine bakılmaksızın fonksiyon içindeki koda uygulanan prosedür içi optimizasyonların (IPA) paralelleştirilmesini uygulamayı planlıyoruz. Şimdilik sınırlayıcı bağlantı, çok iş parçacıklı modda çalışırken çöp toplama işlemlerini devre dışı bırakan genel bir kilit ekleyen çöp toplayıcıdır (gelecekte çöp toplayıcı, GCC'nin çok iş parçacıklı yürütülmesi için uyarlanacaktır).
Performanstaki değişiklikleri değerlendirmek için 100 binden fazla kod satırı ve 1700 fonksiyon içeren gimple-match.c dosyasını bir araya getiren bir test paketi hazırlandı. 5 fiziksel çekirdekli ve 8250 sanal (Hyperthreading) Intel Core i4-8U CPU'ya sahip bir sistem üzerinde yapılan testler, Intra Prosedürel GIMPLE optimizasyonlarının yürütme süresinde 7 iş parçacığı çalıştırırken 4'den 2 saniyeye ve 3 iş parçacığı çalıştırırken 4 saniyeye bir azalma gösterdi. iplikler, yani Söz konusu montaj aşamasının hızında sırasıyla 1.72 ve 2.52 kat artış sağlandı. Testler ayrıca Hyperthreading ile sanal çekirdeklerin kullanılmasının performansın artmasını sağlamadığını da gösterdi.
Genel derleme süresi yaklaşık %10 oranında azaldı, ancak tahminlere göre RTL optimizasyonlarının paralelleştirilmesi, bu aşamanın derleme sırasında önemli ölçüde daha fazla zaman alması nedeniyle daha somut sonuçlara ulaşılmasına olanak tanıyacak. Yaklaşık RTL paralelleştirme sonrasında toplam montaj süresi 1.61 kat azalacaktır. Bundan sonra IPA optimizasyonlarını paralel hale getirerek yapım süresini %5-10 daha azaltmak mümkün olacak.
Kaynak: opennet.ru