ΠΡΠΎΠ΅ΠΊΡ VeriGPU ΡΠ΅Π»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ GPU, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Verilog. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Verilog, Π½ΠΎ ΡΠ»Π΅Π΄ Π΄ΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ²Π΅. ΠΠ°ΠΏΡΠ΅Π΄ΡΡΠΈΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT.
VeriGPU ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅ΡΠΎΡ (ASIC), ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΡΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. Π ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΡΠ°ΠΌΠΊΠ°ΡΠ° Π·Π° Π΄ΡΠ»Π±ΠΎΠΊΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ PyTorch ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° VeriGPU Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API HIP (Heterogeneous-Compute Interface). ΠΠΎ-ΠΊΡΡΠ½ΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈ Π΄ΡΡΠ³ΠΈ API, ΠΊΠ°ΡΠΎ SYCL ΠΈ NVIDIA CUDA.
GPU ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ RISC-V, Π½ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½Π°ΡΠ° Π²ΡΡΡΠ΅ΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ GPU Π΅ ΡΠ»Π°Π±ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ RISC-V ISA, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° GPU Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π°ΡΠ° Π·Π° RISC-V, Π½Π΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Ρ Π·Π°Π΄Π°ΡΠ° Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ RISC-V. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½Π° Π²ΡΡΡ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, Π·Π°ΡΠΎΠ²Π° Π·Π° ΡΡΠΊΡΠ°ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ°ΡΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ BF16, Π° Π½Π°Π»ΠΈΡΠ½ΠΈ ΡΠ° ΡΠ°ΠΌΠΎ ΡΡΡΡΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ, ΠΊΠ°ΡΠΎ exp, log, tanh ΠΈ sqrt.
ΠΡ Π²Π΅ΡΠ΅ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ GPU ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, APU (Accelerated Processing Unit) Π·Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ("+", "-", "/", "*") ΠΈ Π±Π»ΠΎΠΊ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ ("+", "*") ΠΈ Π±Π»ΠΎΠΊ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅. ΠΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π°ΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° C++ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° LLVM. ΠΡ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΎΡΠΊΡΠΎΡΠ²Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ SIMT (Single instruction multiple thread).

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
