ΠΡΠΎΠ΅ΠΊΡΡΡ VeriGPU ΠΈΠΌΠ° Π·Π° ΡΠ΅Π» Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ GPU, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ Π² Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Verilog. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Verilog, Π½ΠΎ ΡΠ»Π΅Π΄ ΠΏΡΠΈΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΌΡ Π² Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π° ΡΠ΅Π°Π»Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° MIT.
VeriGPU Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ (ASIC), ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Ρ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΡΠ°ΠΌΠΊΠ°ΡΠ° Π·Π° Π΄ΡΠ»Π±ΠΎΠΊΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ PyTorch ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° VeriGPU Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° HIP (Heterogeneous-Compute Interface) API. Π Π±ΡΠ΄Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΡΡΠ³ΠΈ 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 ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π΅Π΄ΠΈΠ½ΠΈΡΠ½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΠΈΡΠΊΠΈ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru