VeriGPU ํ๋ก์ ํธ๋ Verilog ์ ์ ์์คํ ์ค๋ช ๋ฐ ๋ชจ๋ธ๋ง ์ธ์ด๋ก ๊ฐ๋ฐ๋ ๊ฐ๋ฐฉํ GPU๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ฒ์์ ์ด ํ๋ก์ ํธ๋ Verilog ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์ค์ด์ง๋ง ์ค๋น ์ํ์ ์ด๋ฅด๋ฉด ์ค์ ์นฉ์ ์์ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ๊ฐ๋ฐ์ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
VeriGPU๋ ๊ธฐ๊ณ ํ์ต ์์คํ ๊ณผ ๊ด๋ จ๋ ๊ณ์ฐ์ ๊ฐ์ํํ๋๋ก ์ต์ ํ๋ ASIC(์์ฉ ํ๋ก๊ทธ๋จ ํน์ ์ฒ๋ฆฌ ์ฅ์น)๋ก ํฌ์ง์ ๋๋ฉ๋๋ค. ์ด ๊ณํ์๋ PyTorch ๋ฅ ๋จธ์ ๋ฌ๋ ํ๋ ์์ํฌ์์ ํธํ์ฑ ์ ๊ณต ๋ฐ HIP(Heterogeneous-Compute Interface) API๋ฅผ ์ฌ์ฉํ์ฌ VeriGPU์ฉ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ฐ๋ฅ์ฑ์ด ์ธ๊ธ๋์ด ์์ต๋๋ค. ํฅํ SYCL ๋ฐ NVIDIA CUDA์ ๊ฐ์ ๋ค๋ฅธ API์ ๋ํ ์ง์ ์ถ๊ฐ๋ ๋ฐฐ์ ๋์ง ์์ต๋๋ค.
GPU๋ RISC-V ๋ช ๋ น์ด ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ ํ์ง๋ง GPU ๋ช ๋ น์ด ์ธํธ์ ๊ฒฐ๊ณผ ๋ด๋ถ ์ํคํ ์ฒ๋ GPU ์ค๊ณ๊ฐ RISC-V ํํ์ ๋ง์ง ์๋ ์ํฉ์์ RISC-V ISA์ ์ ํธํ๋์ง ์์ต๋๋ค. , RISC-V์์ ํธํ์ฑ ์ ์ง ์์ ์ด ์ค์ ๋์ด ์์ง ์์ต๋๋ค. . ๊ฐ๋ฐ์ ๊ธฐ๊ณ ํ์ต ์์คํ ์ ํ์ํ ๊ธฐ๋ฅ์ ์ค์ ์ ๋๋ฏ๋ก ์นฉ ๋งคํธ๋ฆญ์ค์ ํฌ๊ธฐ์ ๋ณต์ก์ฑ์ ์ค์ด๊ธฐ ์ํด BF16 ๋ถ๋ ์์์ ํ์๋ง ์ฌ์ฉํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ๊ณ ํ์ต์ ํ์ํ ๋ถ๋ ์์์ ์ฐ์ฐ๋ง ์ฌ์ฉํฉ๋๋ค. exp, log, tanh ๋ฐ sqrt๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ฏธ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์ ์ค GPU ์ปจํธ๋กค๋ฌ, ์ ์ ์ฐ์ฐ์ฉ APU(๊ฐ์ ์ฒ๋ฆฌ ์ฅ์น)("+", "-", "/", "*"), ๋ถ๋ ์์์ ์ฐ์ฐ์ฉ ๋ธ๋ก("+", "*") ) ๋ฐ ๋ถ๊ธฐ ๋จ์. ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํด ์ด์ ๋ธ๋ฌ์ LLVM ๊ธฐ๋ฐ C++ ์ฝ๋ ์ปดํ์ผ ์ง์์ด ์ ๊ณต๋ฉ๋๋ค. ๊ณํ๋ ๊ธฐ๋ฅ ์ค ๋ช ๋ น์ ๋ณ๋ ฌ ์คํ, ๋ฐ์ดํฐ ๋ฐ ๋ช ๋ น ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑ, SIMT ์์ (๋จ์ผ ๋ช ๋ น ๋ค์ค ์ค๋ ๋)์ด ๋์ ๋๋๋ค.
์ถ์ฒ : opennet.ru