Bilang bahagi ng isang proyekto sa pananaliksik
Para sa pagsubok or pagsusuri
Sa susunod na yugto, pinlano din na ilipat ang mga interprocedural RTL optimization sa magkahiwalay na mga thread, na isinasaalang-alang ang mga katangian ng hardware platform. Pagkatapos noon, plano naming ipatupad ang parallelization ng intraprocedural optimizations (IPA) na inilapat sa code sa loob ng function, anuman ang mga detalye ng tawag. Ang naglilimitang link sa ngayon ay ang garbage collector, na nagdagdag ng pandaigdigang lock na hindi pinapagana ang mga operasyon sa pangongolekta ng basura habang tumatakbo sa multi-threaded mode (sa hinaharap ang garbage collector ay iaakma para sa multi-threaded execution ng GCC).
Upang suriin ang mga pagbabago sa performance, isang test suite ang inihanda na nag-assemble ng gimple-match.c file, na kinabibilangan ng higit sa 100 libong linya ng code at 1700 function. Ang mga pagsubok sa isang system na may Intel Core i5-8250U CPU na may 4 na pisikal na core at 8 virtual (Hyperthreading) ay nagpakita ng pagbaba sa oras ng pagpapatupad ng Intra Procedural GIMPLE optimization mula 7 hanggang 4 na segundo kapag nagpapatakbo ng 2 thread at hanggang 3 segundo kapag tumatakbo sa 4 mga thread, i.e. Ang isang pagtaas sa bilis ng yugto ng pagpupulong na isinasaalang-alang ay nakamit ng 1.72 at 2.52 beses, ayon sa pagkakabanggit. Ipinakita rin ng mga pagsubok na ang paggamit ng mga virtual na core na may Hyperthreading ay hindi humahantong sa pagtaas ng pagganap.
Ang kabuuang oras ng pagbuo ay nabawasan ng humigit-kumulang 10%, ngunit ayon sa mga pagtataya, ang pag-parallelize ng mga pag-optimize ng RTL ay magbibigay-daan sa pagkamit ng mas nakikitang mga resulta, dahil ang yugtong ito ay tumatagal ng mas maraming oras sa panahon ng compilation. Tinatayang pagkatapos ng parallelization ng RTL, ang kabuuang oras ng pagpupulong ay mababawasan ng 1.61 beses. Pagkatapos nito, posibleng bawasan ang oras ng pagbuo ng isa pang 5-10% sa pamamagitan ng pag-parallelize ng mga IPA optimization.
Pinagmulan: opennet.ru