Abstract

The use of accelerators in high-performance computing is increasing. The most commonly used accelerator is the graphics processing unit (GPU) because of its low cost and massively parallel performance. The two most common programming environments for GPU accelerators are CUDA and OpenCL. While CUDA runs natively only on NVIDIA GPUs, OpenCL is an open standard that can on a variety of hardware processing platforms, including NVIDIA GPUs, AMD GPUs, and Intel or AMD CPUs. Given the abundance of GPU applications written in CUDA, we seek to leverage this investment in CUDA and enable CUDA programs to run anywhere via a CUDA-to-OpenCL source-to-source translator. The resultant OpenCL versions permit the GPU-accelerated codes to on a wider variety of processors that would not otherwise be possible. However, robust source-to-source translation from CUDA to OpenCL faces a myriad of challenges. As such, this paper identifies those challenges and presents a classification of CUDA language idioms that present practical impediments to automatic translation.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call