CUDA

From UMIACS
Revision as of 01:43, 21 May 2013 by Derek (talk | contribs) (→‎RHEL)
Jump to navigation Jump to search

CUDA is a programming architecture developed by NVIDIA to allow General Purpose Computing on GPUs or "GPGPU". It requires a specific card and driver to work correctly, UMIACS has a number of facilities and labs that have Cuda hardware available.

CUDA Software on Linux

RHEL

The first component you will need if you are not using a resource that you know is running CUDA is to check to see if you have the Nvidia driver running. You can run cat /proc/driver/nvidia/version

If something like the following example does not show you will need to contact staff to see if your hardware is capable and if so we will need to add the driver to the machine. You must have version 304.64 or greater for Cuda 5.0.35.

$ cat /proc/driver/nvidia/version 
NVRM version: NVIDIA UNIX x86_64 Kernel Module  304.64  Tue Oct 30 10:58:20 PDT 2012
GCC version:  gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)

You can now load the Cuda environment variables by the Modules command. This will load the latest version into your environment if you need to specify a version please see module avail cuda for available versions.

 module load cuda

Cuda5

To get started you might want to build and test with the Cuda GPU Computing SDK. In Cuda 5 the SDK is no longer separate and you need to make a copy of the examples directory inside the cuda toolkit directory. You can do this by running the following command.

  • RHEL5 - rsync -a /opt/stow/cuda/cuda-5.0.35/samples ~/cuda_samples
  • RHEL6 - rsync -a /opt/common/cuda/cuda-5.0.35/samples ~/cuda_samples

You should now be able to run make command in the ~/cuda_samples directory and compile all the examples. Please note that you will need to activate a MPI module if you wish to be able to compile all the examples correctly, for example you can run module load openmpi-x86_64. You can alternatively compile the specific sample codes by going into the respective directories and typing make

Note: Compiling requires the LIBRARY_PATH environmental variable above to tell GCC where to find the nvidia shared libraries. If using an alternate compiler please consult it as to how to modify the compile time linker path.

Ubuntu 12.04

First you will need to ensure you have the updated x-updates repository added to your workstation. Please contact staff@umiacs.umd.edu and we will help get this in place for your workstation.

The other component is the toolkit and in Ubuntu non-locally compiled software is available in /opt/common. This includes the CUDA toolkit. You can find all the versions available in /opt/common/cuda.

Ubuntu and Cuda are tested in 4.2.9 and higher.

$ ls /opt/common/cuda
cudatoolkit-3.2.16  cudatoolkit-4.0.17  cudatoolkit-4.1.28 cudatoolkit-4.2.9
  • bash/sh
    • export PATH=/opt/common/cuda/cudatoolkit-4.2.9/bin:${PATH}
    • export LD_LIBRARY_PATH=/opt/common/cuda/cudatoolkit-4.2.9/lib64:/opt/common/cuda/cudatoolkit-4.2.9/lib:${LD_LIBRARY_PATH}
  • tcsh/csh
    • setenv PATH /opt/common/cuda/cudatoolkit-4.2.9/bin:${PATH}
    • setenv LD_LIBRARY_PATH /opt/common/cuda/cudatoolkit-4.2.9/lib64:/opt/common/cuda/cudatoolkit-4.2.9/lib:${LD_LIBRARY_PATH}

To get started you might want to build and test with the GPU Computing SDK. You can do this by running /opt/common/cuda/cudatoolkit-4.2.9/gpucomputingsdk_4.2.9_linux.run. It will prompt you to where you want to install the SDK.

Once it is installed please apply this patch from the directory you installed the SDK into.

patch -p1 < /opt/common/cuda/cudatoolkit-4.2.9/UMIACS-CUDA-SDK-Ubuntu-12.04.diff

You should now be able to run make and compile all the examples.