HPVM 2.0, ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π·Π° CPU, GPU, FPGA ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ускоритСли

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

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

Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ систСми, HPVM сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° Ρ‚Ρ€ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½ΠΈ изчислСния - Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ нСзависимо ΠΎΡ‚ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС (IR), Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ инструкции (V-ISA) ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊ Π·Π° изпълнСниС:

  • ΠœΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° HPVM Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° инструкциитС Π½Π° LLVM Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π·Π° улавянС Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π½ΠΈΠ²Π° Π½Π° Π·Π°Π΄Π°Ρ‡Π°, Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. ΠœΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° HPVM Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΡΡŠΡ‰ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции ΠΈ сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ†Π΅Π» Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ прСдставянС Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ оптимизация Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ систСми.
  • АрхитСктурата Π½Π° виртуалния Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструкции (V-ISA) абстрахира Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈΡ‚Π΅ характСристики Π½Π° ниско Π½ΠΈΠ²ΠΎ ΠΈ обСдинява Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠΈ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° само основСн ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ – Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. V-ISA Π²ΠΈ позволява Π΄Π° постигнСтС прСносимост ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ изчислСния ΠΈ Π²ΠΈ позволява Π΄Π° Π½Π΅ Π³ΡƒΠ±ΠΈΡ‚Π΅ производитСлност ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ систСми. Virtual ISA ΠΌΠΎΠΆΠ΅ ΡΡŠΡ‰ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° доставянС Π½Π° унивСрсалСн изпълним ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° CPU, GPU, FPGA ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ускоритСли.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° гъвкаво ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ Π·Π° изчислитСлния процСс сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° информация Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° (структура Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°), Ρ‚Π°ΠΊΠ° ΠΈ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ възли Π·Π° изпълнСниС Π½Π° всяко ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ изчислитСлни устройства, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² систСмата.

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

Основни ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π½Π° HPVM 2.0:

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π΅Π·ΠΈΠΊΠΎΠ² Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Π½Π° Hetero-C++, ΠΊΠΎΠΉΡ‚ΠΎ опростява успорСдяванСто Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² C/C++ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π² HPVM. Hetero-C++ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π½ΠΈΠ²ΠΎ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ Π² HPVM Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° нишки.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ FPGA Π±Π΅ΠΊΠ΅Π½Π΄, Π·Π° Π΄Π° осигури ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ Π½Π° Intel FPGA. Π—Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Intel FPGA SDK Π·Π° OpenCL.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° DSE (Design Space Exploration), която Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° тСсни мСста Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ настройванС Π½Π° прилоТСния Π·Π° Π΄Π°Π΄Π΅Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. Π Π°ΠΌΠΊΠ°Ρ‚Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π³ΠΎΡ‚ΠΎΠ² ΠΌΠΎΠ΄Π΅Π» Π½Π° производитСлност Π·Π° FPGA ΠΎΡ‚ Intel ΠΈ ΠΏΡ€Π°Π²ΠΈ възмоТно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ собствСни процСсори Π·Π° оптимизация Π·Π° всякакви устройства, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΎΡ‚ HPVM. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° HPVM, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π° LLVM Π½ΠΈΠ²Π° Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ.
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° LLVM са Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π΄ΠΎ вСрсия 13.0.
  • ΠšΠΎΠ΄ΡŠΡ‚ Π΅ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½, Π·Π° Π΄Π° улСсни навигацията Π² ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π°, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ.
  • Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π·Π° тСстванС Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ тСстовС Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ HPVM ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ.

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

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