VeriGPU ํ”„๋กœ์ ํŠธ๋Š” Verilog ์–ธ์–ด๋กœ ๊ฐœ๋ฐฉํ˜• GPU๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

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 ์ž‘์—…(๋‹จ์ผ ๋ช…๋ น ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ)์ด ๋ˆˆ์— ๋•๋‹ˆ๋‹ค.

VeriGPU ํ”„๋กœ์ ํŠธ๋Š” Verilog ์–ธ์–ด๋กœ ๊ฐœ๋ฐฉํ˜• GPU๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.


์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€