HPVM 2.0, CPU, GPU, FPGA ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†๊ธฐ์šฉ ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐœํ‘œ

LLVM ํ”„๋กœ์ ํŠธ๋Š” ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  CPU, GPU, FPGA ๋ฐ ๋„๋ฉ”์ธ๋ณ„ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†๊ธฐ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” HPVM 2.0(์ด๊ธฐ์ข… ๋ณ‘๋ ฌ ๊ฐ€์ƒ ๋จธ์‹ ) ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ด๊ธฐ์ข… ๋ณ‘๋ ฌ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ณ‘๋ ฌ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋ธ(CPU ์ฝ”์–ด, ๋ฒกํ„ฐ ๋ช…๋ น์–ด, GPU ๋“ฑ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ•œ ์‹œ์Šคํ…œ, ์„œ๋กœ ๋‹ค๋ฅธ ๋ช…๋ น์–ด ์„ธํŠธ ๋ฐ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต์œผ๋กœ ์ธํ•ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์‹œ์Šคํ…œ์€ ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ณ ์œ ํ•œ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. HPVM ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ์•„์ด๋””์–ด๋Š” GPU, ๋ฒกํ„ฐ ๋ช…๋ น, ๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ, FPGA ๋ฐ ๋‹ค์–‘ํ•œ ํŠน์ˆ˜ ์ปดํ“จํŒ…์„ ํฌํ•จํ•˜์—ฌ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์„ ์ง€์›ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํ•˜๋“œ์›จ์–ด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ํ†ตํ•ฉ ํ‘œํ˜„์„ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์†๊ธฐ ์นฉ.

๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ ๋‹ฌ๋ฆฌ HPVM์€ ์ด๊ธฐ์ข… ์ปดํ“จํŒ…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์„ธ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ, ์ฆ‰ IR(์ค‘๊ฐ„ ํ‘œํ˜„), V-ISA(๊ฐ€์ƒ ๋ช…๋ น์–ด ์ง‘ํ•ฉ ์•„ํ‚คํ…์ฒ˜) ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์žฅ๋น„์™€ ๋…๋ฆฝ์ ์ธ ๋Ÿฐํƒ€์ž„ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐํ•ฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ค‘๊ฐ„ ํ‘œํ˜„ HPVM์€ ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…, ๋ฐ์ดํ„ฐ ๋ฐ ๊ณ„์‚ฐ ํŒŒ์ดํ”„๋ผ์ธ ์ˆ˜์ค€์—์„œ ๋ณ‘๋ ฌ์„ฑ์„ ์บก์ฒ˜ํ•จ์œผ๋กœ์จ LLVM ๋ช…๋ น์˜ ์ค‘๊ฐ„ ํ‘œํ˜„์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. HPVM ์ค‘๊ฐ„ ํ‘œํ˜„์—๋Š” ๋ฒกํ„ฐ ๋ช…๋ น๊ณผ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ชฉ์ ์€ ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํšจ์œจ์ ์ธ ์ฝ”๋“œ ์ƒ์„ฑ ๋ฐ ์ตœ์ ํ™”์ž…๋‹ˆ๋‹ค.
  • V-ISA(Virtual Instruction Set Architecture)๋Š” ํ•˜์œ„ ์ˆ˜์ค€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ  ๊ธฐ๋ณธ ๋™์‹œ์„ฑ ๋ชจ๋ธ์ธ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ทธ๋ž˜ํ”„๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ณ‘๋ ฌ์„ฑ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. V-ISA๋Š” ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์„ ์œ„ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํ•˜๋“œ์›จ์–ด ๊ฐ„ ์ด์‹์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„ฑ๋Šฅ์„ ์žƒ์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Virtual ISA๋Š” CPU, GPU, FPGA ๋ฐ ๋‹ค์–‘ํ•œ ๊ฐ€์†๊ธฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ฐ€๋Šฅ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐํ•œ ์ปดํ“จํŒ… ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ์ •์ฑ…์€ ๋Ÿฐํƒ€์ž„์— ์ ์šฉ๋˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ(๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜๊ณ  ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋Œ€์ƒ ์ปดํ“จํŒ… ์žฅ์น˜์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ณ„ ํ”„๋กœ๊ทธ๋žจ ๋…ธ๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๋Š” NVIDIA GPU(cuDNN ๋ฐ OpenCL), Intel AVX ๋ฒกํ„ฐ ๋ช…๋ น, FPGA ๋ฐ ๋ฉ€ํ‹ฐ์ฝ”์–ด x86 CPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ISA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋…ธ๋“œ๋ฅผ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HPVM ๋ณ€ํ™˜๊ธฐ ๊ฒฐ๊ณผ์˜ ์„ฑ๋Šฅ์€ GPU ๋ฐ ๋ฒกํ„ฐ ์ปดํ“จํŒ… ์žฅ์น˜์šฉ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑ๋œ OpenCL ์ฝ”๋“œ์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

HPVM 2.0์˜ ์ฃผ์š” ํ˜์‹ :

  • HPVM์—์„œ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•œ C/C++ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์˜ ๋ณ‘๋ ฌํ™”๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” Hetero-C++ ์–ธ์–ด ํ”„๋ŸฐํŠธ์—”๋“œ๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hetero-C++๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ค€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ฐ HPVM ์Šค๋ ˆ๋“œ ๊ทธ๋ž˜ํ”„์— ๋งคํ•‘๋˜๋Š” ๊ณ„์ธต์  ์ž‘์—…์— ๋Œ€ํ•œ ํ™•์žฅ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • Intel FPGA์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด FPGA ๋ฐฑ์—”๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด OpenCL์šฉ Intel FPGA SDK๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • DSE(Design Space Exploration) ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ง€์ •๋œ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์— ๋งž๊ฒŒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž๋™์œผ๋กœ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™” ๋ฐ ๋ณ‘๋ชฉ ํ˜„์ƒ ๊ฐ์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” Intel์˜ FPGA์šฉ ๊ธฐ์„ฑ ์„ฑ๋Šฅ ๋ชจ๋ธ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ HPVM์—์„œ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์žฅ์น˜์— ๋Œ€ํ•œ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ž์‹ ์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HPVM ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ทธ๋ž˜ํ”„ ์ˆ˜์ค€๊ณผ LLVM ์ˆ˜์ค€ ๋ชจ๋‘์—์„œ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • LLVM ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ฒ„์ „ 13.0์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๋ฒ ์ด์Šค, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๊ฐ€ ์žฌ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ธํ”„๋ผ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ HPVM ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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