GPU Computing
Modern graphics card from NVIDIA
The term GPGPU (General Processing for Graphics Processing Units) or GPU computing, is used to describe the application of the GPU to far more general tasks than it was originally meant for. The GPU is the main processor of the graphics card found in most desktop computers, and its modern incarnation differs from traditional CPUs (Central Processing Units) in some important aspects; the level of parallelity, the architecture resembling that of several SIMDs able to operate simultaneously, a high memory bandwidth, but also high latency.
Traditionally, the GPU was not readily accessible to the application programmer, it only performed specific computationally intensive parts of a (fixed) graphics pipeline. For the development of GPU computing, two requirements had to be met, namely a high level of programmability of the GPU, and it needed better suited data types. Today, this has come a long way, and together with the features distinguishing the GPU from the CPU, this has enabled modern GPU computing.
GPU computing at SINTEF Applied Mathematics
At SINTEF, we have been following the development of this new research direction with great enthusiasm from the beginning. In various projects we have employed the GPU for computational tasks in many different diciplines, ranging from surface intersection problems to water wave simulations. Some of our more recent projects involving GPU computing are
- INSTANT (Interactive simulation and visualization in the cloud)
- Parallel3D (Visualization of large, rich 3D data sets with massively parallel hardware)
- CloudViz (Direct visualization in the cloud)
- KirurgiskSIM (Surgical simulator)
- SCORE (Smooth particle hydrodynamics core development)