A Performance Comparison of CUDA and OpenCL
D-Wave Systems Inc., 100-4401 Still Creek Drive, Burnaby, British Columbia, Canada, V5C 6G9
arXiv:1005.2581v2 [cs.PF] (14 May 2010)
@article{karimi2010performance,
title={A Performance Comparison of CUDA and OpenCL},
author={Karimi, K. and Dickson, N.G. and Hamze, F.},
journal={Arxiv preprint arXiv:1005.2581},
year={2010}
}
CUDA and OpenCL offer two different interfaces for programming GPUs. OpenCL is an open standard that can be used to program CPUs, GPUs, and other devices from different vendors, while CUDA is specific to NVIDIA GPUs. Although OpenCL promises a portable language for GPU programming, its generality may entail a performance penalty. In this paper, we compare the performance of CUDA and OpenCL using complex, near-identical kernels. We show that when using NVIDIA compiler tools, converting a CUDA kernel to an OpenCL kernel involves minimal modifications. Making such a kernel compile with ATI’s build tools involves more modifications. Our performance tests measure and compare data transfer times to and from the GPU, kernel execution times, and end-to-end application execution times for both CUDA and OpenCL.
November 5, 2010 by hgpu