ื“ื™ VeriGPU ืคึผืจื•ื™ืขืงื˜ ื“ืขื•ื•ืขืœืึธืคึผืก ืึทืŸ ืึธืคึฟืŸ ื’ืคึผื• ืื™ืŸ ื“ื™ Verilog ืฉืคึผืจืึทืš

ื“ื™ VeriGPU ืคึผืจื•ื™ืขืงื˜ ืื™ื– ืึทื™ืžืขื“ ืฆื• ืฉืึทืคึฟืŸ ืึทืŸ ืึธืคึฟืŸ ื’ืคึผื• ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืื™ืŸ ื“ื™ Verilog ืฉืคึผืจืึทืš ืคึฟืึทืจ ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ ืื•ืŸ ืžืึธื“ืขืœื™ื ื’ ืขืœืขืงื˜ืจืึธื ื™ืฉ ืกื™ืกื˜ืขืžืขืŸ. ื˜ื›ื™ืœืขืก, ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืžื™ื˜ ืึท Verilog ืกื™ืžื™ืึทืœื™ื™ื˜ืขืจ, ืึธื‘ืขืจ ืึทืžืึธืœ ื’ืขืขื ื“ื™ืงื˜ ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืคึฟืึทืจ ื“ื™ ืคึผืจืึธื“ื•ืงืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืคืึทืงื˜ื™ืฉ ื˜ืฉื™ืคึผืก. ื“ื™ ื“ื™ื•ื•ืขืœืึทืคึผืžืึทื ืฅ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื–ืขื ืขืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ ื“ื™ MIT ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ.

VeriGPU ืื™ื– ืคึผืึทื–ื™ืฉืึทื ื“ ื•ื•ื™ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ-ืกืคึผืขืฆื™ืคื™ืฉ ืคึผืจืึทืกืขืกืขืจ (ASIC) ืึธืคึผื˜ื™ืžื™ื–ืขื“ ืคึฟืึทืจ ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื ื’ ื—ืฉื‘ื•ื ื•ืช ืฉื™ื™ึทื›ื•ืช ืฆื• ืžืึทืฉื™ืŸ ืœืขืจื ืขืŸ ืกื™ืกื˜ืขืžืขืŸ. ืคึผืœืึทื ื– ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืžื™ื˜ ื“ื™ PyTorch ื˜ื™ืฃ ืžืึทืฉื™ืŸ ืœืขืจื ืขืŸ ืคืจื™ื™ืžื•ื•ืขืจืง ืื•ืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืคึฟืึทืจ VeriGPU ื ื™ืฆืŸ ื“ื™ HIP (Heterogeneous-Compute Interface) API. ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืœื™ื™ื’ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืื ื“ืขืจืข ืึทืคึผื™ืก, ืึทื–ืึท ื•ื•ื™ SYCL ืื•ืŸ NVIDIA CUDA.

ื“ื™ ื’ืคึผื• ื™ื•ื•ืึทืœื•ื•ื– ืคึฟื•ืŸ ื“ื™ RISC-V ื™ื ืกื˜ืจื•ืงื˜ื™ืึธื ืก ืฉื˜ืขืœืŸ, ืึธื‘ืขืจ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ื™ื ืขืจืœืขืš ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืคื•ืŸ ื“ื™ ื’ืคึผื• ืœื™ืžืขื“ ืฉื˜ืขืœืŸ ืื™ื– ืฉื•ื•ืึทืš ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืžื™ื˜ ื“ื™ RISC-V ISA, ื•ื•ื™ื™ึทืœ ืื™ืŸ ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก ื•ื•ืขืŸ ื“ื™ ื’ืคึผื• ืคึผืœืึทืŸ ืื™ื– ื ื™ืฉื˜ ืคึผืึทืกื™ืง ืื™ืŸ ื“ื™ RISC-V ืคืึทืจื˜ืจืขื˜ื•ื ื’, ื ื™ื˜ ื‘ื“ืขื” ืฆื• ื”ืึทืœื˜ืŸ RISC-V ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™. ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ื– ืคืึธื•ืงื™ืกื˜ ืื•ื™ืฃ ื“ื™ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคืืจืœืื ื’ื˜ ืคึฟืึทืจ ืžืึทืฉื™ืŸ ืœืขืจื ืขืŸ ืกื™ืกื˜ืขืžืขืŸ, ืึทื–ื•ื™ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ื’ืจื™ื™ืก ืื•ืŸ ืงืึทืžืคึผืœืขืงืกื™ื˜ื™ ืคื•ืŸ ื“ื™ ืฉืคึผืึธืŸ ืžืึทื˜ืจื™ืฅ, ืขืก ื ื™ืฆื˜ ื‘ืœื•ื™ื– ื“ื™ BF16 ืคืœืึธื•ื˜ื™ื ื’ ืคื•ื ื˜ ืคึฟืึธืจืžืึทื˜ ืื•ืŸ ื‘ืœื•ื™ื– ื“ื™ ืคืœืึธื•ื˜ื™ื ื’ ืคื•ื ื˜ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืคืืจืœืื ื’ื˜ ืคึฟืึทืจ ืžืึทืฉื™ืŸ ืœืขืจื ืขืŸ, ืึทื–ืึท ื•ื•ื™ ืขืงืกืคึผ, ืงืœืึธืฅ, tanh ืื•ืŸ sqrt, ื–ืขื ืขืŸ ื‘ื ื™ืžืฆื.

ืฆื•ื•ื™ืฉืŸ ื“ื™ ืฉื•ื™ืŸ ื‘ื ื™ืžืฆื ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื–ืขื ืขืŸ ื“ื™ ื’ืคึผื• ืงืึธื ื˜ืจืึธืœืœืขืจ, ืึทืคึผื• (ืึทืงืกืขืœืขืจื™ื™ื˜ื™ื“ ืคึผืจืึทืกืขืกื™ื ื’ ื™ื•ื ื™ื˜) ืคึฟืึทืจ ื™ื ื˜ืึทื“ื–ืฉืขืจ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ("+",,"-","/,","*"), ืื•ืŸ ืึท ืึทืคึผืึทืจืึทื˜ ืคึฟืึทืจ ืคืœืึธื•ื˜ื™ื ื’ ืคื•ื ื˜ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ("+," "*") ืื•ืŸ ืึท ืฆื•ื•ื™ื™ืขื ื“ื™ืง ื‘ืœืึธืง. ืฆื• ืฉืึทืคึฟืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–, ืขืก ืึธืคืคืขืจืก ืึท ืึทืกืขืžื‘ืึทืœืขืจ ืื•ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืงืึทืžืคึผื™ื™ืœื™ื ื’ C ++ ืงืึธื“ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ LLVM. ืฆื•ื•ื™ืฉืŸ ื“ื™ ืคึผืœืึทื ื ืขื“ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื–, ืคึผืึทืจืึทืœืขืœ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก, ืงืึทื˜ืฉื™ื ื’ ืคื•ืŸ ื“ืึทื˜ืŸ ืื•ืŸ ืœื™ืžืขื“ ื–ื™ืงืึธืจืŸ, ืื•ืŸ SIMT (ืื™ื™ืŸ ื™ื ืกื˜ืจื•ืงื˜ื™ืึธืŸ ืงื™ื™ืคืœ ืคืึธื“ืขื) ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื›ื™ื™ืœื™ื™ื˜ื™ื“.

ื“ื™ VeriGPU ืคึผืจื•ื™ืขืงื˜ ื“ืขื•ื•ืขืœืึธืคึผืก ืึทืŸ ืึธืคึฟืŸ ื’ืคึผื• ืื™ืŸ ื“ื™ Verilog ืฉืคึผืจืึทืš


ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’