Proyekto aron idugang ang suporta para sa parallel compilation process sa GCC

Isip bahin sa usa ka proyekto sa panukiduki Parallel GCC Ang trabaho nagsugod na sa pagdugang og feature sa GCC nga nagtugot sa proseso sa pag-compile nga mabahin ngadto sa daghang parallel threads. Sa pagkakaron, aron madugangan ang katulin sa pagtukod sa mga multi-core nga sistema, ang make utility naggamit sa paglansad sa separado nga mga proseso sa compiler, nga ang matag usa nagtukod ug bulag nga code file. Ang bag-ong proyekto nag-eksperimento sa paghatag parallelization sa lebel sa compiler, nga posibleng makapauswag sa performance sa multi-core system.

Alang sa pagsulay giandam usa ka bulag nga parallelizing nga sanga sa GCC, nga nagtanyag usa ka bag-ong parameter "β€”param = num-threads = N" aron itakda ang gidaghanon sa mga hilo. Sa inisyal nga yugto, among gipatuman ang pagbalhin sa interprocedural optimizations ngadto sa separado nga mga hilo, nga gitawag nga cyclically alang sa matag function ug dali nga maparehas. Ang mga operasyon sa GIMPLE nga responsable sa mga pag-optimize nga independente sa hardware nga nagtimbang-timbang sa interaksyon sa mga gimbuhaton sa usag usa gibutang sa lainlaing mga hilo.

Sa sunod nga yugto, giplano usab nga ibalhin ang mga interprocedural nga pag-optimize sa RTL sa lainlaing mga hilo, nga gikonsiderar ang mga kinaiya sa platform sa hardware. Pagkahuman niana, nagplano kami nga ipatuman ang parallelization sa intraprocedural optimizations (IPA) nga gipadapat sa code sa sulod sa function, bisan unsa pa ang mga detalye sa tawag. Ang limiting link sa pagkakaron mao ang garbage collector, nga midugang og global lock nga nag-disable sa mga operasyon sa pagkolekta sa basura samtang nagdagan sa multi-threaded mode (sa umaabot ang garbage collector ipahiangay para sa multi-threaded execution sa GCC).

Aron masusi ang mga pagbag-o sa pasundayag, usa ka test suite ang giandam nga nag-assemble sa gimple-match.c file, nga naglakip sa labaw sa 100 ka libo nga linya sa code ug 1700 ka mga gimbuhaton. Ang mga pagsulay sa usa ka sistema nga adunay Intel Core i5-8250U CPU nga adunay 4 nga pisikal nga mga cores ug 8 virtual (Hyperthreading) nagpakita sa pagkunhod sa oras sa pagpatuman sa Intra Procedural GIMPLE nga pag-optimize gikan sa 7 hangtod 4 segundo kung nagdagan ang 2 nga mga hilo ug hangtod sa 3 segundos kung nagdagan ang 4 mga hilo, i.e. Ang usa ka pagtaas sa katulin sa yugto sa asembliya nga gikonsiderar nakab-ot sa 1.72 ug 2.52 ka beses, sa tinuud. Gipakita usab sa mga pagsulay nga ang paggamit sa mga virtual nga core nga adunay Hyperthreading dili mosangpot sa pagtaas sa pasundayag.

Proyekto aron idugang ang suporta para sa parallel compilation process sa GCC

Ang kinatibuk-ang oras sa pagtukod gikunhuran sa gibana-bana nga 10%, apan sumala sa mga panagna, ang pagparis sa mga pag-optimize sa RTL magtugot nga makab-ot ang labi ka makita nga mga sangputanan, tungod kay kini nga yugto nagkinahanglag daghang oras sa panahon sa pagtipon. Gibana-bana nga pagkahuman sa parallelization sa RTL, ang kinatibuk-ang oras sa asembliya maminusan sa 1.61 ka beses. Pagkahuman niini, mahimo’g makunhuran ang oras sa pagtukod sa lain nga 5-10% pinaagi sa pagparis sa mga pag-optimize sa IPA.

Proyekto aron idugang ang suporta para sa parallel compilation process sa GCC

Source: opennet.ru

Idugang sa usa ka comment