ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° добавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° процСса Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ към GCC

ΠšΠ°Ρ‚ΠΎ част ΠΎΡ‚ изслСдоватСлски ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠŸΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ GCC Π—Π°ΠΏΠΎΡ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° добавянС Π½Π° функция към GCC, която позволява ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π΄Π° бъдС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° няколко ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ нишки. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π·Π° Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ скоростта Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° многоядрСни систСми, ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° make ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° стартиранСто Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ процСси Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠ΄ΠΎΠ² Ρ„Π°ΠΉΠ». Новият ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ СкспСримСнтира с осигуряванС Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Ρ‰Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ производитСлността Π½Π° многоядрСни систСми.

Π—Π° тСстванС ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ Π½Π° GCC, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π½ΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ β€žβ€”param=num-threads=N” Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° Π½ΠΈΡˆΠΊΠΈΡ‚Π΅. Π’ началния Π΅Ρ‚Π°ΠΏ Π²Π½Π΅Π΄Ρ€ΠΈΡ…ΠΌΠ΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ нишки, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎ Π·Π° всяка функция ΠΈ ΠΌΠΎΠ³Π°Ρ‚ лСсно Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° GIMPLE, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° нСзависими ΠΎΡ‚ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ оцСняват взаимодСйствиСто Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π΅Π΄Π½Π° с Π΄Ρ€ΡƒΠ³Π°, са поставСни Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ нишки.

На слСдващия Π΅Ρ‚Π°ΠΏ сС ΠΏΠ»Π°Π½ΠΈΡ€Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° сС прСмСстят ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈΡ‚Π΅ RTL ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ нишки, ΠΊΠ°Ρ‚ΠΎ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ характСристикитС Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ½Ρ‚Ρ€Π°ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (IPA), ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ към ΠΊΠΎΠ΄Π° във функцията, нСзависимо ΠΎΡ‚ спСцификата Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‰Π°Ρ‚Π° Π²Ρ€ΡŠΠ·ΠΊΠ° засСга Π΅ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ΡŠΡ‚ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ работят Π² многонишков Ρ€Π΅ΠΆΠΈΠΌ (Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ΡŠΡ‚ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ Ρ‰Π΅ бъдС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ Π·Π° многонишково изпълнСниС Π½Π° GCC).

Π—Π° Π΄Π° сС оцСнят ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² производитСлността, Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ тСстов ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ€Π° Ρ„Π°ΠΉΠ»Π° gimple-match.c, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 100 хиляди Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ 1700 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ВСстовСтС Π½Π° систСма с процСсор Intel Core i5-8250U с 4 физичСски ядра ΠΈ 8 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ (Hyperthreading) ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° намаляванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° Intra Procedural GIMPLE ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΎΡ‚ 7 Π½Π° 4 сСкунди ΠΏΡ€ΠΈ изпълнСниС Π½Π° 2 нишки ΠΈ Π½Π° 3 сСкунди ΠΏΡ€ΠΈ изпълнСниС Π½Π° 4 нишки, Ρ‚.Π΅. Π£Π²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° скоростта Π½Π° разглСТдания Π΅Ρ‚Π°ΠΏ Π½Π° сглобяванС Π΅ постигнато ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ с 1.72 ΠΈ 2.52 ΠΏΡŠΡ‚ΠΈ. ВСстовСтС ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π°, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ядра с Hyperthreading Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ повишСна производитСлност.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° добавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° процСса Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ към GCC

ΠžΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ бСшС Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ с ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 10%, Π½ΠΎ спорСд ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° RTL ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ постиганСто Π½Π° ΠΏΠΎ-осСзаСми Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ ΠΎΡ‚Π½Π΅ΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация. ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ слСд ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° RTL ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° сглобяванС Ρ‰Π΅ бъдС Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ с 1.61 ΠΏΡŠΡ‚ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС възмоТно Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с ΠΎΡ‰Π΅ 5-10% Ρ‡Ρ€Π΅Π· ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° IPA ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° добавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° процСса Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ към GCC

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€