Pāhana e hoʻohui i ke kākoʻo no ka hoʻohālikelike ʻana o ke kaʻina hana hōʻuluʻulu iā GCC

Ma ke ʻano he papahana noiʻi Kaulike GCC Ua hoʻomaka ka hana e hoʻohui i kahi hiʻohiʻona i ka GCC e hiki ai ke hoʻokaʻawale ʻia ke kaʻina hana hoʻohui i nā pae like. I kēia manawa, e hoʻonui i ka wikiwiki o ke kūkulu ʻana i nā ʻōnaehana multi-core, hoʻohana ka make utility i ka hoʻomaka ʻana o nā kaʻina hana compiler kaʻawale, e kūkulu ana kēlā me kēia i kahi faila code ʻokoʻa. Ke hoʻāʻo nei ka papahana hou me ka hāʻawi ʻana i ka parallelization ma ka pae compiler, e hoʻomaikaʻi paha i ka hana ma nā ʻōnaehana multi-core.

No ka hoʻāʻo ʻana hoomakaukauia he lālā hoʻohālikelike ʻokoʻa o GCC, e hāʻawi ana i kahi ʻāpana hou "—param=num-threads=N" e hoʻonohonoho i ka helu o nā milo. I ka pae mua, ua hoʻokō mākou i ka hoʻololi ʻana i nā optimizations interprocedural i loko o nā ʻāpana ʻokoʻa, i kapa ʻia ʻo cyclically no kēlā me kēia hana a hiki ke maʻalahi i ka parallelized. Hoʻokomo ʻia nā hana GIMPLE no nā loiloi kūʻokoʻa ponoʻī e loiloi i ka pili ʻana o nā hana me kekahi i hoʻonoho ʻia i nā kaula kaʻawale.

I ka pae aʻe, ua hoʻolālā ʻia e hoʻoneʻe i nā optimizations interprocedural RTL i loko o nā kaula kaʻawale, me ka noʻonoʻo ʻana i nā ʻano o ka ʻenehana ʻenehana. Ma hope o kēlā, hoʻolālā mākou e hoʻokō i ka parallelization o intraprocedural optimizations (IPA) i hoʻopili ʻia i ke code i loko o ka hana, me ka nānā ʻole i nā kikoʻī o ke kelepona. ʻO ka loulou palena no kēia manawa ʻo ka ʻohi ʻōpala, kahi i hoʻohui i kahi laka honua e hoʻopau i nā hana ohi ʻōpala i ka wā e holo ana ma ke ʻano multi-threaded (i ka wā e hiki mai ana e hoʻololi ʻia ka ʻohi ʻōpala no ka hoʻokō ʻana i ka GCC).

No ka loiloi ʻana i nā loli i ka hana, ua hoʻomākaukau ʻia kahi papa hoʻāʻo e hōʻuluʻulu i ka faila gimple-match.c, aia ma mua o 100 tausani mau laina code a me 1700 mau hana. ʻO nā hoʻāʻo ma kahi ʻōnaehana me kahi Intel Core i5-8250U CPU me 4 kino kino a me 8 virtual (Hyperthreading) i hōʻike i ka emi ʻana o ka manawa hoʻokō o Intra Procedural GIMPLE optimizations mai 7 a 4 kekona i ka wā e holo ana i 2 mau kaula a i 3 kekona ke holo 4 nā kaula, ʻo ia hoʻi. ʻO ka piʻi ʻana o ka wikiwiki o ke kahua o ka hui e noʻonoʻo ʻia nei ua loaʻa iā 1.72 a me 2.52 mau manawa. Ua hōʻike pū ʻia nā hoʻāʻo ʻana i ka hoʻohana ʻana i nā cores virtual me Hyperthreading ʻaʻole alakaʻi i ka hoʻonui ʻana i ka hana.

Pāhana e hoʻohui i ke kākoʻo no ka hoʻohālikelike ʻana o ke kaʻina hana hōʻuluʻulu iā GCC

Ua hōʻemi ʻia ka manawa kūkulu holoʻokoʻa ma kahi o 10%, akā e like me nā wānana, ʻo ka hoʻohālikelike ʻana i nā optimizations RTL e ʻae i ka loaʻa ʻana o nā hopena ʻike, no ka mea, ʻoi aku ka nui o kēia manawa i ka wā o ka hōʻuluʻulu ʻana. Ma hope o ka hoʻohālikelike ʻana o RTL, e hoʻemi ʻia ka nui o ka manawa hui e 1.61 mau manawa. Ma hope o kēia, hiki ke hōʻemi i ka manawa kūkulu ʻia e kekahi 5-10% ma ka hoʻohālikelike ʻana i nā optimizations IPA.

Pāhana e hoʻohui i ke kākoʻo no ka hoʻohālikelike ʻana o ke kaʻina hana hōʻuluʻulu iā GCC

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka