You are here


General Purpose Graphics Processor Unit (GPGPU)

NVIDIA has made the computing engine of their graphics processing units (GPU's) accessible to programmers. This engine called the Compute Unified Device Architecture, or CUDA for short is a parallel computing architecture developed by NVIDIA used to render images that are to be displayed on a computer screen. These devices can be programmed using a variant of C or C++ and the NVIDIA compiler. While the CUDA engine is accessible in virtually all of NVIDIA's newer graphics cards, GPU's, they also make specially purposed devices that are used exclusively for computation called GPGPU's.

Minerva has two types of GPGPU resources. These include nodes with 1 NVIDIA M2090 GPU, 64 AMD Interlagos cores and 256 GB of memory, and nodes with 2 NVIDIA K20Xm GPUs, 24 Intel Ivy Bridge cores and 256 GB of memory. These devices can speed up the execution of certain codes almost three orders of magnitude if there is extensive vector content but also can slow down execution if there is very little vector content.

How to access:

Researchers that have programs that can utilize the GPGPU's can access the appropriate nodes by specifying:

-n Ncpu
-R "gpu"

Where 'Ncpu' is the total number of CPU cores. The number of cores per node can be 1 through 24 on Mothra, 1 through 64 on Manda. Our experience is that the GPGPU's get saturated around 10 per card, program dependent of course. The number of GPUs requested per node is by 1 by default. This can be changed with the parameter ngpus_excl_p=N, where N is the number of GPUs per node. As an example, -R "gpu rusage[ngpus_excl_p=2]" would request two GPUs. We have 2 GPU cards per node on Mothra and one card per node on Manda at this time.

One must also load in the cuda toolkit to access the drivers and supporting subroutines:

module load cuda

For more information on
CUDA programming
Available applications

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer