ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ LLVM прСдстави HPVM 1.0, ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π·Π° CPU, GPU, FPGA ΠΈ ускоритСли

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ…Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° HPVM 1.0 (Heterogeneous Parallel Virtual Machine), насочСн към опростяванС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ систСми ΠΈ прСдоставянС Π½Π° инструмСнти Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° CPU, GPU, FPGA ΠΈ спСцифични Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ускоритСли (ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° FGPA ΠΈ ускоритСлитС Π½Π΅ бяха Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² вСрсията 1.0). ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Apache 2.0.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° идСя Π½Π° HPVM Π΅ Π΄Π° осигури ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ прСдставянС Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ изпълними ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° изпълнСниС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ изчислСния, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ GPU, Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции, многоядрСни процСсори, FPGA ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ спСциализирани ускоритСлни Ρ‡ΠΈΠΏΠΎΠ²Π΅. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ систСми, HPVM сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° Ρ‚Ρ€ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ изчислСния: ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС, нСзависимо ΠΎΡ‚ Π΅Π·ΠΈΠΊΠ° ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π°, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ инструкции (ISA) ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС.

НСзависимото ΠΎΡ‚ Ρ†Π΅Π»Ρ‚Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС (IR) Π½Π° HPVM сС основава Π½Π° прСдставянСто Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ инструкции LLVM 9.0 ΠΈ Π³ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° с ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΡƒΠ»ΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π½ΠΈΠ²ΠΎ Π·Π°Π΄Π°Ρ‡Π°, Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. ΠœΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° HPVM Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΡΡŠΡ‰ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции ΠΈ сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ оптимизация Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ систСми.

АрхитСктурата Π½Π° Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ инструкции (ISA) позволява прСносимост ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ изчислитСлСн Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€ ΠΈ ΠΏΡ€Π°Π²ΠΈ възмоТно Π΄Π° Π½Π΅ сС Π³ΡƒΠ±ΠΈ производитСлност ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ систСми. Virtual ISA ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° доставянС Π½Π° унивСрсалСн изпълним ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° процСсори, Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ процСсори, FPGA ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ускоритСли.

На настоящия Π΅Ρ‚Π°ΠΏ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° HPVM ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄, способни Π΄Π° ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ½ΠΈ възли, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ISA, Π·Π° изпълнСниС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° NVIDIA GPU (cuDNN ΠΈ OpenCL), Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции Π½Π° Intel AVX ΠΈ многоядрСни x86 процСсори. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС HPVM ΠΏΡ€ΠΈΠ»Π°Π³Π° гъвкави ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° изчислитСлни процСси, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½Π° информация (Π³Ρ€Π°Ρ„ΠΈΡ‡Π½Π° структура), Ρ‚Π°ΠΊΠ° ΠΈ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ възли Π·Π° изпълнСниС Π½Π° всяко ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ изчислитСлни устройства, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² систСмата.

ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° HPVM ΠΌΠΎΠΆΠ΅ Π΄Π° постигнС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° HPVM транслаторитС Π΅ сравнима с Ρ€ΡŠΡ‡Π½ΠΎ написан OpenCL ΠΊΠΎΠ΄ Π·Π° GPU ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ изчислитСлни устройства.

Π’ сравнСниС с ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡ€Π΅Π³Π»Π΅Π΄, HPVM 1.0 Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΈ Π°Π»Π³Π΅Π±Ρ€ΠΈΡ‡Π½ΠΈ Ρ‚Π΅Π½Π·ΠΎΡ€Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, интСрфСйси Π·Π° Pytorch ΠΈ Keras, приблиТСния Π½Π° ΠΊΠΎΠ½Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Ρ€Π°ΠΌΠΊΠ° Π·Π° настройка Π½Π° приблиТСнията, която Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π±ΠΈΡ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΈ приблиТСния Π·Π° спСцифични Ρ‚Π΅Π½Π·ΠΎΡ€Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ·Π±ΠΈΡ€Π° конфигурацията, която осигурява ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½Π° производитСлност.

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

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