OpenCL
Comparison With CUDA

Multiple comparisons have been drawn between CUDA and OpenCL since its inception [56][57]. They both draw the same conclusions: if the OpenCL implementation is correctly tweaked to suit the target architecture, it performs no worse than CUDA. Since the key feature of OpenCL is portability (via its abstracted memory and execution model) the programmer is not able to directly use GPU specific technologies unlike CUDA. CUDA is more acutely aware of the platform upon which it will be executing, as it is limited to Nvidia hardware, and therefore provides more mature compiler optimisations and execution techniques (such as the use of texture memory which cannot be done in OpenCL). Furthermore, the CUDA compiler displayed more mature compilation techniques such as more aggressive #pragma unroll addition to loops. Therefore, the developer is required to add in the optimisations manually to the kernel code. This is indicative of the maturity of the CUDA toolkit versus the newer OpenCL toolkits. It is likely in the future that this gap will be closed as the toolchains mature.

http://en.wikipedia.org/wiki/OpenCL 

발번역:

처음부터 CUDA와 OpenCL간의 여러  비교들이 있었다. 둘은 모두 같은 결론을 목표로 한다. "OpenCL이 타겟에 맞게 잘 구현되어있다면, CUDA보다 성능이 나쁘진 않다.".
OpenCL의 주요 특성이 portability이기 때문에 ( 메모리와 수행 모델의 추상화를 통해서 ) 프로그래머는 CUDA처럼 GPU를 직접 접근을 하여 사용하지 못한다. CUDA는 자신이 어떤 platform(NVIDIA)에서 돌아갈지를 알고있어서 더욱 성숙한 컴파일러 최적화(OpenCL에서 못하는 texture memory 사용같은)가 가능하다.
게다가, CUDA 컴파일러는 더욱 성숙한 컴파일 기술(aggressive한 #progma unroll같은) 을 보여준다. 
Therefore, the developer is required to add in the optimisations manually to the kernel code. 이것은 성숙한 CUDA toolkit과 새로운 OpenCL toolkit의 차이를 보여준다. 이 차이는 툴체인이 성숙함에 따라 좁아질 것이다.


 

신고
Posted by Leo 리오 트랙백 0 : 댓글 0