Proyek kanggo nambah dhukungan kanggo paralelisasi proses kompilasi menyang GCC

Minangka bagéan saka proyek riset Paralel GCC Pakaryan wis diwiwiti kanggo nambah fitur menyang GCC sing ngidini proses kompilasi dipérang dadi sawetara utas paralel. Saiki, kanggo nambah kacepetan mbangun ing sistem multi-inti, sarana make nggunakake peluncuran pangolahan kompiler sing kapisah, sing saben nggawe file kode sing kapisah. Proyèk anyar nyoba nyedhiyakake paralelisasi ing tingkat kompiler, sing bisa ningkatake kinerja sistem multi-inti.

Kanggo tes disiapake cabang parallelizing kapisah saka GCC, kang nawakake parameter anyar "-param = num-threads = N" kanggo nyetel nomer Utas. Ing tahap wiwitan, kita ngetrapake transfer optimasi interprocedural menyang benang sing kapisah, sing diarani cyclically kanggo saben fungsi lan bisa gampang paralel. Operasi GIMPLE tanggung jawab kanggo optimasi hardware-independen sing ngevaluasi interaksi fungsi karo saben liyane diselehake ing thread kapisah.

Ing tahap sabanjure, uga direncanakake kanggo mindhah optimasi RTL interprocedural menyang benang sing kapisah, kanthi nganggep karakteristik platform hardware. SawisΓ© iku, kita rencana kanggo ngleksanakake parallelization saka optimizations intraprocedural (IPA) Applied kanggo kode nang fungsi, preduli saka spesifik telpon. Link watesan kanggo saiki yaiku pengumpul sampah, sing wis nambah kunci global sing mateni operasi pengumpulan sampah nalika mlaku ing mode multi-threaded (ing mangsa ngarep kolektor sampah bakal diadaptasi kanggo eksekusi multi-threaded GCC).

Kanggo ngevaluasi owah-owahan ing kinerja, test Suite wis disiapake sing ngrakit gimple-match.c file, kang kalebu luwih saka 100 ewu baris kode lan 1700 fungsi. Tes ing sistem kanthi CPU Intel Core i5-8250U kanthi 4 intine fisik lan 8 virtual (Hyperthreading) nuduhake nyuda wektu eksekusi optimasi GIMPLE Intra Procedural saka 7 nganti 4 detik nalika mbukak 2 benang lan dadi 3 detik nalika mlaku 4. benang, i.e. Tambah ing kacepetan saka tahap perakitan ing pertimbangan wis ngrambah dening 1.72 lan 2.52 kaping, mungguh. Tes uga nuduhake yen nggunakake inti virtual karo Hyperthreading ora mimpin kanggo nambah kinerja.

Proyek kanggo nambah dhukungan kanggo paralelisasi proses kompilasi menyang GCC

Wektu mbangun sakabèhé dikurangi kira-kira 10%, nanging miturut ramalan, parallelizing optimizations RTL bakal ngidini entuk asil sing luwih nyata, amarga tahap iki njupuk wektu luwih akeh sajrone kompilasi. Kira-kira sawise parallelization RTL, total wektu perakitan bakal suda dening 1.61 kaping. Sawise iki, bakal bisa nyuda wektu mbangun kanthi 5-10% liyane kanthi parallelizing optimizations IPA.

Proyek kanggo nambah dhukungan kanggo paralelisasi proses kompilasi menyang GCC

Source: opennet.ru

Add a comment