Using GPGPU
[media id=1 width=450 height=253]
GPGPU (General-Purpose computation on Graphics Processing Units) is suitable for workloads which lend themselves to massive parallelism. Throughput oriented processes demand different design decisions from the more traditional single thread way of thinking, requiring emphasis on parallelism and scalability rather than sequential programming. Implementing GPGPU on suitable problems can reap upwards of a tenfold improvement.
History
GPGPU is not new; Because of the lack of a GPGPU standard API, engineers have had to find ways to express their non-graphics algorithms in terms of a graphics based API like OpenGL or DirectX in order to take advantage of the latent processing power in GPU’s. There have been attempts to produce standard API’s, notably BrookGPU which was created by Ian Buck as part of his PhD thesis. Ian Buck was employed by NVidia to take advantage of GPGPU on NVidia GPU’s and the result is CUDA (Compute Unified Device Architecture). OpenCL (OpenCL Open Computing Language) was initially developed by Apple Inc., which holds trademark rights, and refined into an initial proposal in collaboration with technical teams at AMD, IBM, Intel, and Nvidia. Apple spun off its OpenCL API to the Khronos Group, which maintains it as an open, royalty free standard that any GPU maker can implement. OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors. When asked how NVIDIA’s CUDA compares with OpenCL, Manju Hegde, the General Manager of CUDA at NVIDIA said:-
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.
Today’s GPUs are general-purpose parallel processors with support for accessible programming interfaces and industry-standard languages such as C. NVidia’s proprietary Applications Programming Interface CUDA provided a sound base for the introduction of GPGPU in demanding High Performance Computing environments. Developers who port their applications to GPUs often achieve speedups of orders of magnitude vs. optimized CPU implementations.
If you want to port your libraries to take advantage of the tremendous speed up potential offered by GPGPU, we can make it happen, plan hardware, help you migrate and support you.
Working with OpenCL and CUDA
Our focus is to deliver the best GPU computing performance on the planet for our customers. We currently use OpenCL for the analysis feeding a real time automated trading platform, OpenCL allows us to source the best GPU hardware from the best supplier and take advantage of open market competition. We are comfortable with both CUDA and OpenCL.