Manju Hegde, the General Manager of CUDA at NVIDIA, explained to AppleInsider that supporting OpenCL on a GPU requires certain hardware capabilities such as scatter write, as well as certain generality of control flow. Both have already been implemented in NVIDIA's CUDA architecture.
NVIDIA's CUDA ISA and hardware compute engine "were designed to support multiple entry points into the compute power of the GPU including standard computing languages (such as C, Fortran, etc) as well as API style interfaces like OpenCL," Hegde wrote in an email interview.
Rather than being competing technologies, Hegde noted that "OpenCL is a layer on top of the CUDA driver interface. As such, OpenCL is one avenue to GPU computing through CUDA, C for CUDA is another."
OpenCL vs CUDA?
When asked how NVIDIA's CUDA compares with OpenCL, and if NVIDIA is planning to support both in its future products, Hegde explained, "This is probably better put by saying how does C for CUDA compare with OpenCL – this is a language to language comparison."
Hegde added, "The answer is that the two share very similar constructs for defining data parallelism, which is generally the major task, so the code will be very similar and the porting efforts will be minor.
"As OpenCL is another method of accessing the GPU, we wholeheartedly support it. Its sits seamlessly on top of our CUDA architecture and as such, developers using NVIDA hardware have a choice of language and programming environment.
"With regards to product support, we plan to have OpenCL supported on the CUDA architecture which means that any NVIDIA GPU built upon the CUDA architecture will support OpenCL. This means every GPU (including GeForce, Tesla and Quadro lines) from the GeForce 8 series onwards will support OpenCL. This gives OpenCL developers an installed base of more than 100 million GPUs."