Proyék pikeun nambihan dukungan pikeun paralélisasi prosés kompilasi kana GCC

Salaku bagian tina proyék panalungtikan GCC paralel Gawé geus dimimitian pikeun nambahkeun fitur ka GCC anu ngamungkinkeun prosés kompilasi dibagi kana sababaraha threads paralel. Ayeuna, pikeun ningkatkeun laju ngawangun dina sistem multi-inti, make utiliti ngagunakeun peluncuran prosés kompiler anu misah, anu masing-masing ngawangun file kode anu misah. Proyék anyar ieu ékspérimén sareng nyayogikeun paralélisasi dina tingkat kompiler, anu berpotensi ningkatkeun kinerja dina sistem multi-inti.

Pikeun tés disiapkeun cabang parallelizing misah tina GCC, nu nawarkeun parameter anyar "-param = num-threads = N" pikeun set jumlah threads. Dina tahap awal, urang ngalaksanakeun mindahkeun optimizations interprocedural kana threads misah, nu disebut cyclically pikeun tiap fungsi sarta bisa gampang parallelized. Operasi GIMPLE tanggung jawab pikeun optimasi mandiri hardware anu ngevaluasi interaksi fungsi saling disimpen dina benang anu misah.

Dina tahap salajengna, éta ogé rencanana mindahkeun optimizations RTL interprocedural kana threads misah, nyokot kana akun ciri tina platform hardware. Sanggeus éta, urang rencanana pikeun nerapkeun parallelization of optimizations intraprocedural (IPA) dilarapkeun ka kode di jero fungsi, paduli spésifik tina panggero. Link ngawatesan pikeun ayeuna teh collector sampah, nu geus ditambahkeun konci global nu disables operasi ngumpulkeun sampah bari ngajalankeun dina modeu multi-threaded (dina mangsa nu bakal datang kolektor sampah bakal diadaptasi pikeun palaksanaan multi-threaded of GCC).

Pikeun evaluate parobahan kinerja, geus disiapkeun test suite nu assembles file gimple-match.c, nu ngawengku leuwih ti 100 sarébu garis kode jeung 1700 fungsi. Tés dina sistem nganggo CPU Intel Core i5-8250U sareng 4 inti fisik sareng 8 virtual (Hyperthreading) nunjukkeun panurunan dina waktos palaksanaan optimasi GIMPLE Intra Procedural tina 7 dugi ka 4 detik nalika ngajalankeun 2 benang sareng ka 3 detik nalika ngajalankeun 4. benang, i.e. Paningkatan dina kagancangan tahap assembly anu ditalungtik dihontal ku 1.72 sareng 2.52 kali masing-masing. Tés ogé nunjukkeun yén ngagunakeun inti virtual sareng Hyperthreading henteu ngakibatkeun paningkatan kinerja.

Proyék pikeun nambihan dukungan pikeun paralélisasi prosés kompilasi kana GCC

Waktu ngawangun sakabéhna dikirangan ku kira-kira 10%, tapi numutkeun ramalan, parallelizing optimizations RTL bakal ngamungkinkeun pikeun ngahontal hasil anu langkung nyata, sabab tahap ieu peryogi langkung seueur waktos salami kompilasi. Kira-kira sanggeus parallelization RTL, total waktu assembly bakal ngurangan ku 1.61 kali. Saatos ieu, éta bakal tiasa ngirangan waktos ngawangun ku 5-10% deui ku parallelizing optimizations IPA.

Proyék pikeun nambihan dukungan pikeun paralélisasi prosés kompilasi kana GCC

sumber: opennet.ru

Tambahkeun komentar