DeepMind с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ S6, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с рСализация Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π·Π° CPython

DeepMind, извСстна с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΡ‚Π΅ си Π² областта Π½Π° изкуствСния ΠΈΠ½Ρ‚Π΅Π»Π΅ΠΊΡ‚, ΠΎΡ‚Π²ΠΎΡ€ΠΈ изходния ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° S6, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈ JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π·Π° Π΅Π·ΠΈΠΊΠ° Python. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ интСрСсСн, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, която сС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° със стандартния CPython, осигурявайки пълна ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с CPython ΠΈ Π½Π΅ изискваща модификация Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΎΡ‚ 2019 Π³., Π½ΠΎ Π·Π° съТалСниС бСшС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½ ΠΈ Π²Π΅Ρ‡Π΅ Π½Π΅ сС Ρ€Π°Π·Π²ΠΈΠ²Π°. Въй ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° подобряванС Π½Π° Python, бСшС Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ Π΄Π° бъдС ΠΎΡ‚Π²ΠΎΡ€Π΅Π½. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π΅ написан Π½Π° C++ ΠΈ Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° CPython 3.7. ΠΈ Π΅ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· Apache 2.0.

По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π΅ΡˆΠΈ, S6 Π·Π° Python сС сравнява с двигатСля V8 Π·Π° JavaScript. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° замСня ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ceval.c със собствСна рСализация, която ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JIT компилация Π·Π° ускоряванС Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. S6 провСрява Π΄Π°Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° функция Π²Π΅Ρ‡Π΅ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π° ΠΈ Π°ΠΊΠΎ Π΅ Ρ‚Π°ΠΊΠ°, изпълнява компилирания ΠΊΠΎΠ΄ ΠΈ Π°ΠΊΠΎ Π½Π΅, изпълнява функцията Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° интСрпрСтация Π½Π° Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° CPython. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° интСрпрСтацията сС ΠΎΡ‚Ρ‡ΠΈΡ‚Π° броят Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΡ‚Π΅ инструкции ΠΈ извиквания, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π°Ρ‚Π° функция. Π‘Π»Π΅Π΄ достиганС Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΅Ρ‚Π°ΠΏ сС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π° процСс Π½Π° компилация, Π·Π° Π΄Π° сС ускори чСсто ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС Π½Π° strongjit, ΠΊΠΎΠ΅Ρ‚ΠΎ слСд оптимизация сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² машинни инструкции Π½Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° систСма с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° asmjit.

Π’ зависимост ΠΎΡ‚ СстСството Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, S6 ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΈ условия дСмонстрира ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° скоростта Π½Π° изпълнСниС Π½Π° тСста Π΄ΠΎ 9.5 ΠΏΡŠΡ‚ΠΈ Π² сравнСниС с обикновСния CPython. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° 100 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ тСстовС Π½Π° Richards сС наблюдава 7x ускорСниС, Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° тСста Raytrace, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° голямо количСство матСматичСски изчислСния, сС наблюдава 3-4.5x ускорСниС.

Π‘Ρ€Π΅Π΄ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са Ρ‚Ρ€ΡƒΠ΄Π½ΠΈ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° S6, са ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ C API, ΠΊΠ°Ρ‚ΠΎ NumPy, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с нСобходимостта ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° голям Π±Ρ€ΠΎΠΉ стойности. Ниска производитСлност сС наблюдава ΠΈ ΠΏΡ€ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ извиквания Π½Π° рСсурсоСмки Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° собствСната Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° рСализация Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° Python Π½Π° S6 (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π΅ Π΅ достигнала Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° интСрпрСтация). НапримСр ΠΏΡ€ΠΈ тСста Unpack Sequence, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ масиви/ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, ΠΏΡ€ΠΈ Π΅Π΄Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΈΠΌΠ° забавянС Π΄ΠΎ 5 ΠΏΡŠΡ‚ΠΈ, Π° ΠΏΡ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ производитСлността Π΅ 0.97 ΠΎΡ‚ CPython.

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

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