๊ทธ๋ํฝ ๊ฐ์๊ธฐ ์ ์กฐ์ ์ฒด์ ๋ ๋ฆฝ์ ์ธ OpenCL ํ์ค ๊ตฌํ์ ๊ฐ๋ฐํ๊ณ ๋ค์ํ ์ ํ์ ๊ทธ๋ํฝ ๋ฐ ์ค์ ํ๋ก์ธ์์์ OpenCL ์ปค๋์ ์คํํ๊ธฐ ์ํด ๋ค์ํ ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ PoCL 1.3 ํ๋ก์ ํธ(Portable Computing Language OpenCL) ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์์ต๋๋ค. . ํ๋ก์ ํธ ์ฝ๋๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. X86_64, MIPS32, ARM v7, AMD HSA APU ํ๋ซํผ ๋ฐ VLIW ์ํคํ ์ฒ๋ฅผ ๊ฐ์ถ ๋ค์ํ ํน์ TTA(Transport Triggered Architecture) ํ๋ก์ธ์์ ๋ํ ์์ ์ ์ง์ํฉ๋๋ค.
OpenCL ์ปค๋ ์ปดํ์ผ๋ฌ์ ๊ตฌํ์ LLVM์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ Clang์ OpenCL C์ ํ๋ฐํธ ์๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ ์ ํ ์ด์์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด OpenCL ์ปค๋ ์ปดํ์ผ๋ฌ๋ VLIW, ์ํผ์ค์นผ๋ผ, SIMD, SIMT, ๋ฉํฐ ์ฝ์ด ๋ฐ ๋ฉํฐ ์ค๋ ๋ฉ๊ณผ ๊ฐ์ ์ฝ๋ ์คํ์ ๋ณ๋ ฌํํ๊ธฐ ์ํด ๋ค์ํ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ์กฐํฉ ๊ธฐ๋ฅ์ ์์ฑํ ์ ์์ต๋๋ค. ICD ๋๋ผ์ด๋ฒ ์ง์ ๊ฐ๋ฅ
(์ค์น ๊ฐ๋ฅํ ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ). CPU, ASIP(TCE/TTA), HSA ์ํคํ
์ฒ ๊ธฐ๋ฐ GPU ๋ฐ NVIDIA GPU(CUDA)๋ฅผ ํตํ ์์
์ ์ง์ํ๋ ๋ฐฑ์๋๊ฐ ์์ต๋๋ค.
์ ๋ฒ์ ์๋ LLVM/Clang 8.0์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. macOS ํ๋ซํผ์์ ICD(์ค์น ๊ฐ๋ฅํ ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ)์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. CPU์ฉ ๋ฐฑ์๋ ๋๋ผ์ด๋ฒ ์์ด pocl์ ๋น๋ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. HSA(์ด๊ธฐ์ข
์์คํ
์ํคํ
์ฒ)์ ๊ฒฝ์ฐ HSA ๋ฐํ์ ์์ ISA๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํ ์ด๊ธฐ ์ง์์ด ์ ๊ณต๋ฉ๋๋ค. Vecmathlib ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ฑฐ๋๊ณ ์ด์ ๋ฒ์ ์ LLVM(6.0 ๋ฏธ๋ง)์ ๋ํ ์ง์์ด ์ค๋จ๋๋ ๋ฑ ์ฝ๋ ๋ฒ ์ด์ค๊ฐ ์ ๋ฆฌ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru