๊ทธ๋ํฝ ๊ฐ์๊ธฐ ์ ์กฐ์ ์ฒด์ ๋ ๋ฆฝ์ ์ธ OpenCL ํ์ค ๊ตฌํ์ ๊ฐ๋ฐํ๊ณ ๋ค์ํ ์ ํ์ ๊ทธ๋ํฝ ๋ฐ ์ค์์์ OpenCL ์ปค๋์ ์คํํ๊ธฐ ์ํด ๋ค์ํ ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ PoCL 3.0(Portable Computing Language OpenCL) ํ๋ก์ ํธ์ ๋ฆด๋ฆฌ์ค๊ฐ ๋ฐํ๋์์ต๋๋ค. ํ๋ก์ธ์. ํ๋ก์ ํธ ์ฝ๋๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. VLIW ์ํคํ ์ฒ๋ฅผ ๊ฐ์ถ ํ๋ซํผ X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU ๋ฐ ๋ค์ํ ํน์ ASIP(Application-Specific Instruction-set Processor) ๋ฐ TTA(Transport Triggered Architecture) ํ๋ก์ธ์์์์ ์์ ์ ์ง์ํฉ๋๋ค.
OpenCL ์ปค๋ ์ปดํ์ผ๋ฌ์ ๊ตฌํ์ LLVM์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ Clang์ OpenCL C์ ํ๋ฐํธ ์๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ ์ ํ ์ด์์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด OpenCL ์ปค๋ ์ปดํ์ผ๋ฌ๋ VLIW, ์ํผ์ค์นผ๋ผ, SIMD, SIMT, ๋ฉํฐ ์ฝ์ด ๋ฐ ๋ฉํฐ ์ค๋ ๋ฉ๊ณผ ๊ฐ์ ์ฝ๋ ์คํ์ ๋ณ๋ ฌํํ๊ธฐ ์ํด ๋ค์ํ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ์กฐํฉ ๊ธฐ๋ฅ์ ์์ฑํ ์ ์์ต๋๋ค. ICD ๋๋ผ์ด๋ฒ(์ค์น ๊ฐ๋ฅํ ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ)๊ฐ ์ง์๋ฉ๋๋ค. CPU, ASIP(TCE/TTA), HSA ์ํคํ ์ฒ ๊ธฐ๋ฐ GPU ๋ฐ NVIDIA GPU(libcuda๋ฅผ ํตํด)๋ฅผ ํตํ ์์ ์ ์ง์ํ๋ ๋ฐฑ์๋๊ฐ ์์ต๋๋ค.
์ ๋ฒ์ ์์:
- OpenCL 3.0 ์ฌ์์ ์ง์ํ๋ ๋ฐ ํ์ํ ์ต์ ๊ธฐ๋ฅ ์ธํธ๊ฐ ๊ตฌํ๋์์ต๋๋ค. OpenCL 3.0 ์ง์์ ํ์ฌ LLVM 14๊ฐ ํฌํจ๋ CPU ๊ธฐ๋ฐ ๋ฐฑ์๋์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค(๋ค๋ฅธ ๋ฐฑ์๋ ๋ฐ ์ด์ ๋ฒ์ ์ LLVM์ OpenCL 1.2์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค).
- Clang/LLVM 14์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ถ์ ๋ฐ ์๊ฐํ๊ฐ ํฅ์๋์์ต๋๋ค.
- ํน์ํ ํจ์ ๊ทธ๋ฃน์ ์์ฑํ๊ณ ์ด๋ฅผ OpenCL ์ปค๋์ ์ฌ์ฉํ์ฌ ์คํ ํ์ผ์ ํฌํจ์ํค๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru