Kā daļa no pētniecības projekta
Pārbaudei
Nākamajā posmā plānots arī starpprocedurālās RTL optimizācijas pārvietot atsevišķos pavedienos, ņemot vērā aparatūras platformas īpatnības. Pēc tam mēs plānojam ieviest intraprocedurālās optimizācijas (IPA) paralēlizāciju, kas tiek piemērota kodam funkcijas iekšienē, neatkarīgi no izsaukuma specifikas. Pagaidām ierobežojošā saite ir atkritumu savācējs, kas ir pievienojis globālu bloķēšanu, kas atspējo atkritumu savākšanas darbības, darbojoties vairāku pavedienu režīmā (nākotnē atkritumu savācējs tiks pielāgots GCC daudzpavedienu izpildei).
Lai novērtētu veiktspējas izmaiņas, ir sagatavots testu komplekts, kurā tiek apkopots fails gimple-match.c, kas ietver vairāk nekā 100 tūkstošus koda rindu un 1700 funkcijas. Testi sistēmai ar Intel Core i5-8250U centrālo procesoru ar 4 fiziskiem kodoliem un 8 virtuāliem (Hyperthreading) parādīja iekšējās procedūras GIMPLE optimizācijas izpildes laika samazināšanos no 7 līdz 4 sekundēm, palaižot 2 pavedienus un līdz 3 sekundēm, ja palaižot 4. pavedieni, t.i. Aplūkojamā montāžas posma ātruma palielinājums tika sasniegts attiecīgi 1.72 un 2.52 reizes. Pārbaudes arī parādīja, ka virtuālo kodolu izmantošana ar Hyperthreading nepalielina veiktspēju.
Kopējais būvēšanas laiks tika samazināts par aptuveni 10%, taču saskaņā ar prognozēm RTL optimizāciju paralēla veikšana ļaus sasniegt taustāmākus rezultātus, jo šis posms kompilācijas laikā aizņem ievērojami vairāk laika. Aptuveni pēc RTL paralēlizācijas kopējais montāžas laiks tiks samazināts par 1.61 reizi. Pēc tam būs iespējams samazināt izveides laiku vēl par 5-10%, paralēli veicot IPA optimizāciju.
Avots: opennet.ru