Projek untuk menambah sokongan untuk penyelarasan proses penyusunan kepada GCC

Sebagai sebahagian daripada projek penyelidikan GCC selari Kerja telah mula menambah ciri pada GCC yang membolehkan proses penyusunan dibahagikan kepada beberapa utas selari. Pada masa ini, untuk meningkatkan kelajuan binaan pada sistem berbilang teras, utiliti make menggunakan pelancaran proses pengkompil berasingan, yang setiap satunya membina fail kod yang berasingan. Projek baharu sedang bereksperimen dengan menyediakan penyejajaran pada peringkat pengkompil, yang berpotensi meningkatkan prestasi pada sistem berbilang teras.

Untuk ujian disediakan cawangan selari yang berasingan bagi GCC, yang menawarkan parameter baharu β€œβ€”param=num-threads=N” untuk menetapkan bilangan utas. Pada peringkat awal, kami melaksanakan pemindahan pengoptimuman antara prosedur ke dalam benang yang berasingan, yang dipanggil secara kitaran untuk setiap fungsi dan boleh diselaraskan dengan mudah. Operasi GIMPLE yang bertanggungjawab untuk pengoptimuman bebas perkakasan yang menilai interaksi fungsi antara satu sama lain diletakkan dalam benang berasingan.

Pada peringkat seterusnya, ia juga dirancang untuk memindahkan pengoptimuman RTL antara prosedur ke dalam benang yang berasingan, dengan mengambil kira ciri-ciri platform perkakasan. Selepas itu, kami merancang untuk melaksanakan penyelarasan pengoptimuman intraprosedural (IPA) yang digunakan pada kod di dalam fungsi, tanpa mengira spesifik panggilan. Pautan mengehadkan buat masa ini ialah pemungut sampah, yang telah menambah kunci global yang melumpuhkan operasi pengumpulan sampah semasa berjalan dalam mod berbilang benang (pada masa hadapan pemungut sampah akan disesuaikan untuk pelaksanaan berbilang benang bagi GCC).

Untuk menilai perubahan dalam prestasi, suite ujian telah disediakan yang memasang fail gimple-match.c, yang merangkumi lebih daripada 100 ribu baris kod dan 1700 fungsi. Ujian pada sistem dengan CPU Intel Core i5-8250U dengan 4 teras fizikal dan 8 maya (Hyperthreading) menunjukkan pengurangan dalam masa pelaksanaan pengoptimuman GIMPLE Intra Procedural daripada 7 hingga 4 saat apabila menjalankan 2 utas dan kepada 3 saat apabila menjalankan 4 benang, i.e. Peningkatan dalam kelajuan peringkat pemasangan yang sedang dipertimbangkan telah dicapai masing-masing sebanyak 1.72 dan 2.52 kali. Ujian juga menunjukkan bahawa menggunakan teras maya dengan Hyperthreading tidak membawa kepada peningkatan prestasi.

Projek untuk menambah sokongan untuk penyelarasan proses penyusunan kepada GCC

Masa binaan keseluruhan telah dikurangkan sebanyak kira-kira 10%, tetapi menurut ramalan, pengoptimuman RTL yang selari akan membolehkan mencapai hasil yang lebih ketara, memandangkan peringkat ini mengambil masa yang lebih banyak semasa penyusunan. Kira-kira selepas selari RTL, jumlah masa pemasangan akan dikurangkan sebanyak 1.61 kali. Selepas ini, masa binaan boleh dikurangkan sebanyak 5-10% lagi dengan menyelaraskan pengoptimuman IPA.

Projek untuk menambah sokongan untuk penyelarasan proses penyusunan kepada GCC

Sumber: opennet.ru

Tambah komen