This week I’m at the NVIDIA GPU Technology Conference (#GTC2010) learning as much as I can about GPU Computing! There are a lot of cool companies, interesting posters and thought provoking talks going on.
Of course I’ll be attending all the sessions about OpenCL optimization, and so far a few of the talks have mentioned OpenCL implementations in addition to their CUDA work. It sounds like people are getting pretty close performance with OpenCL, maybe only about 1.5x slower and the consensus seems to be that the hit is worth it for portability and if you only use NVIDIA stick with CUDA for the extra bit of performance.
The first day had a few pre-conference tutorials, including an intro to CUDA and an intro to OpenCL. I noticed two things, first that the OpenCL room seemed more full (probably because people attending GTC are more likely to already know CUDA). The second was that the CUDA presentation went under time by about 30 minutes, and the OpenCL presentation went about 30 minutes over schedule. It seems like the time needed to present an introduction linearly maps to the complexity of the language. A lot of people here are a bit pessimistic about OpenCL due mostly to its low level interface as opposed to the CUDA Runtime API as well as a lack of performance incentive if you already use an NVIDIA GPU (everyone here…). While they did list off all the ways they contributed to and are involved in OpenCL (one of their VPs chairs the board of the working group at Khronos) they are not shy about the fact that CUDA will remain far ahead of OpenCL in features and development. This makes sense since they directly control CUDA and have to submit to a committee for OpenCL, so it seems they will drag their heels as long as they don’t face real competition in GPGPU.
I remain optimistic about OpenCL in general, and this has less to do with GPUs and more with the reason for the standard in the first place, heterogeneous computing environments. Most importantly, mobile. There are over 5 billion wireless subscriptions worldwide, and NVIDIA’s CEO claims their mobile chip Tegra is a once-in-a lifetime opportunity to be prepared for the future. They are using ARM because it is the most proven architecture for mobile, but so are a lot of other people in the mobile space. ARM is predicting OpenCL on all smartphones, so I think OpenCL will continue to gain momentum even if it isn’t as exciting on the GPU as CUDA. I hope that increased demand and competition from the market will encourage NVIDIA to port more of their CUDA features over to OpenCL (ahem, templates please).
There are still 2 days of talks, so there is much yet to see and learn. I’ve already met some really cool people while standing by my poster (7mb pdf) and hope to meet many more!