본문 바로가기

Coding Note

[OpenCL] About

openCL (open Computing Language)
: 개방형 범용 병렬 컴퓨팅 프레임 워크..  라고 위키는 설명하고 있는데, 그래픽 처리를 위한 gpu를 그래픽 처리관련 용도 외에 cpu의 활동을 돕는(또는 cpu의 활동보다 높은 성능을 내는) 주체로써 사용하기 위한 언어라고 말할 수 있다. 이런걸 보고 GPGPU(General Purpose computing on Graphics Processing Units)라고 한다.
 아, openGL은 그래픽 처리에 특화된 api를 제공하는 것일 뿐, openCL과는 살짤 다르다. openCL로 openGL을 보다 효율적으로 제어할 수 있어서 같이 쓸수도있다.

gpu는 다차원(보통 3차원)의 개념에서 돌아가기 때문에 벡터를 사용해서 데이터를 나타내고, cpu와는 달리 거의 대부분의 레지스터를 오로지 연산을 위해 사용하기 때문에 슈퍼컴퓨터과 비슷한 효과를 낼 수 있다. 또한 부동소수점 연산에 특화된 부분이 많아서 실세계의 데이터를 다루는데 cpu와는 비교불가한 속도를 자랑한다.
(정말 빠르다는데.. 내 랩탑은 그래픽카드가 openCL을 지원하는 디바이스목록에 가까스로 걸쳐있는거라..  딱히 빠르다곤 안느껴진다..)
 게다가 gpu는 수많은 프로세서를 파이프라이닝하여 구성하기때문에 랜더링 같은 동일한 작업에 대해 엄청난 효율성을 뽑아낼 수 있다. 앞으로 gpgpu를 공부하면서 암호분석툴 제작과병행할 생각이고, 공부 좀 더 해서 초 대용량 데이터의 초고속 검색 등 (그래픽쪽 보단) 슈퍼컴퓨팅을 더 공부해보고싶다. (울프람알파같은거 하나...ㅠ)

openCL과 GPU에 대해 잘 설명해주시는 분이 계신다. 참고해서 공부해야겠다.(말이 좀 빠르시다.. ㅠ 좀만 천천히요 plz..)
http://developer.amd.com/zones/OpenCLZone/programming/Pages/default.aspx 
(openCL 개발자 존 이다. 이 사이트에서 openCL을 위한 개발키트도 다운받을 수 있다.) 

이 경로로 받은 건 아마도 openCL을 다루기 위한 덩어리이다.
이걸 내 개발 환경에서 쉽게 적용하려면 해당 언어와 바인딩이 필요한데, c++의 경우 
위 사이트에 가면 openCL에 대한 다양한 문서들이랑, 튜토리얼 페이지도 있다.
많이 참고하게 될 듯 하다.