GPGPUs are general-purpose graphics processing units. This means using graphics cards for doing general purpose computing. Because of the demand of modern graphics-intensive programs, graphics cards have become very power computers in their own right.
GPGPUs are particularly good at matrix multiplication, random number generation, FFTs, and other numerically intensive and repetitive mathematical operations. They can deliver 5–10 times speed-up for many codes with careful programming.
For more examples of applications that are well-suited to CUDA see NVIDIA’s CUDA pages at http://www.nvidia.com/object/cuda_home.html.
You must request a GPU, you must request one in your PBS script. To do so, you add a node attribute to your
#PBS -l nodes=1:gpus=1,mem=2gb,walltime=1:00:00,qos=flux
Note that you must use
The GPGPUs on nyx and flux are NVidia graphics processors and use NVidia's CUDA programming language. This is a very C-like language (that can be linked with Fortan codes) that makes programming for GPGPUs straightforward. For more information on CUDA programming, see the documentation at http://www.nvidia.com/object/cuda_develop.html.
NVidia also makes special libraries available that make using the GPGPUs even easier. Two of these libraries are
To use the CUDA compiler (
This will give you access to the
CUDA-based applications can be compiled on the login nodes, but cannot be run there, since they do not have GPGPUs.
To install the sample code type