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

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

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

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

Π—Π° ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° промяната Π² производитСлността Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ тСстов Π½Π°Π±ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° компилация Π½Π° Ρ„Π°ΠΉΠ»Π° gimple-match.c, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ Π½Π°Π΄ 100 хиляди Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ 1700 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ВСстовСтС Π½Π° систСма с CPU 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster