From where I sit it seems that the majority of scientific GPU work is being done with NVIDIA’s proprietary CUDA platform. All the signs point to the possibility of this changing, however, and I wonder if 2012 will be the year when OpenCL comes of age. Let’s look at some recent and near future events….
- AMD have recently released the AMD Radeon HD 7970, said to be the fastest single- GPU graphics card on the planet. This new card supports both Microsoft’s DirectCompute along with OpenCL and is much faster than the previous generation of AMD card (see here for compute benchmarks) as well as being faster than NVIDIAs current top of the line GTX 580.
- Intel will release their next generation of CPUs – Ivy Bridge – which will include an increased number of built in GPU cores which should be OpenCL compatible. Although the current Sandy Bridge processors also contain GPU cores, it is not currently possible to target them with Intel’s OpenCL implementation (version 1.5 is strictly for the CPU cores). I would be very surprised if Intel didn’t update their OpenCL implementation to be able to target the GPUs in Ivy Bridge this year.
- AMDs latest Fusion processors also contain OpenCL compatible GPU cores directly integrated with the CPU which programmers can exploit using AMD’s Accelerated Parallel Processing (APP) SDK.
The practical upshot of the above is that if a software vendor uses OpenCL to accelerate their product then it could potentially benefit more of their customers than if they used CUDA. Furthermore, if you want your code to run on the fastest GPU around then OpenCL is the way to go right now.
Having the latest, fastest hardware is pointless if the software you run can’t take advantage of it. Over the last 12 months I have had the opportunity to speak to developers of various commerical scientific and mathematical software products which support GPU acceleration. With the exception of Wolfram’s Mathematica, all of them only supported CUDA. When I asked why they don’t support OpenCL, the response of most of these developers could be paraphrased as ‘The mathematical libraries and vendor support for CUDA are far more developed than those of OpenCL so CUDA support is significantly easier to integerate into our product.‘ Despite this, however, OpenCL support is definitely growing in the world of mathematical and scientific software.
OpenCL in Mathematics software and libraries
- ViennaCL, a GPU-accelerated C++ open-source linear algebra library, was updated to version 1.2.0 on December 31st (just missing the deadline for December’s Month of Math Software). Roughly speaking, ViennaCL is a mixture of Boost.ublas (high-level interface) and MAGMA (GPU-support), yet based on OpenCL rather than CUDA.
- AccelerEyes released a new major version of their GPU accelerated MATLAB toolbox, Jacket, in late December 2011. The big news as far as this article is concerned is that it includes support for OpenCL; something that is currently missing from The Mathworks’ Parallel Computing Toolbox.
- Not content with bringing OpenCL support to MATLAB, AccelerEyes also realesed ArrayFire— a free (for the basic version at least) library for C, C++, Fortran, and Python that includes support for both CUDA and OpenCL.
- Although it’s not new news, it’s worth bearing in mind that Mathematica has supported OpenCL for a while now– since the relase of version 8 back in November 2010.
Finite Element Modelling with Abaqus
- Back in May 2011, Version 6.11 of the finite element modelling package, Abaqus, was released and it included support for NVIDIA cards (see here for NVIDIA’s page on it). In September, GPU support in Abaqus was broadened to include AMD Hardware with an OpenCL compliant release (see here).
- In late December 2011, the first alpha version of FortranCL, an OpenCL interface for Fortran 90, was released.
What do you think? Will OpenCL start to take the lead in scientific and mathematical software applications this year or will CUDA continue to dominate? Are there any new OpenCL projects that I’ve missed?