Osana tutkimusprojektia
Kokeiluun
Seuraavassa vaiheessa suunnitellaan myös prosessienvälisten RTL-optimointien siirtämistä erillisiin säikeisiin laitteistoalustan ominaisuudet huomioon ottaen. Tämän jälkeen aiomme toteuttaa funktion sisällä olevaan koodiin sovellettavien intraprocedural-optimointien (IPA) rinnakkaistamisen kutsun erityispiirteistä riippumatta. Rajoittava linkki on toistaiseksi roskakeräin, joka on lisännyt maailmanlaajuisen lukon, joka estää roskien keräystoiminnot ajettaessa monisäikeisessä tilassa (tulevaisuudessa roskakeräin mukautetaan GCC:n monisäikeiseen suorittamiseen).
Suorituskyvyn muutosten arvioimiseksi on valmisteltu testipaketti, joka kokoaa gimple-match.c-tiedoston, joka sisältää yli 100 tuhatta koodiriviä ja 1700 funktiota. Testit järjestelmällä, jossa oli Intel Core i5-8250U -suoritin, jossa on 4 fyysistä ydintä ja 8 virtuaalista (hyperthreading), osoittivat prosessinsisäisten GIMPLE-optimointien suoritusajan lyhenevän 7 sekunnista 4 sekuntiin, kun suoritettiin 2 säiettä ja 3 sekuntiin, kun suoritettiin 4 langat, ts. Tarkasteltavana olevan kokoonpanovaiheen nopeuden lisäys saavutettiin 1.72-kertaiseksi ja 2.52-kertaiseksi. Testit osoittivat myös, että virtuaalisten ytimien käyttö Hyperthreadingin kanssa ei paranna suorituskykyä.
Kokonaisrakennusaikaa lyhennettiin noin 10 %, mutta ennusteiden mukaan RTL-optimointien rinnastaminen mahdollistaa konkreettisempien tulosten saavuttamisen, koska tämä vaihe vie huomattavasti enemmän aikaa kääntämisen aikana. Suunnilleen RTL-rinnakkaistamisen jälkeen kokonaiskokoonpanoaika lyhenee 1.61 kertaa. Tämän jälkeen on mahdollista lyhentää rakennusaikaa vielä 5-10 % rinnakkain IPA-optimointeja.
Lähde: opennet.ru