CUDA¶
CUDA is a parallel computing platform and API model created and developed by Nvidia, which enables dramatic increases in computing performance by harnessing the power of GPUs
Versions¶
Multiple CUDA versions are available through the module system
Environment¶
The CUDA environment is managed through the modules, which set all the environment variables needed. The availability of different versions can be checked with
module avail cuda
The environment set by a particular module can be inspected, e.g.
module show cuda/9.0
Learn more¶
To learn more about CUDA programming, either talk to your local RSE support, or visit Mike Giles’ CUDA Programming course page at
http://people.maths.ox.ac.uk/gilesm/cuda/
This one-week course is taught in Oxford at the end of July each year, but all of the lecture notes and practicals are provided online for self-study at other times.
Official CUDA documentation¶
NVIDIA provides lots of documentation, both online and in downloadable form:
- Online CUDA documentation
- CUDA homepage
- CUDA Runtime API
- CUDA C Best Practices Guide
- CUDA Compiler Driver NVCC
- CUDA Visual Profiler
- CUDA-gdb debugger
- CUDA-memcheck memory checker
- CUDA maths library
- CUBLAS library
- CUFFT library
- CUSPARSE library
- CURAND library
- NCCL multi-GPU communications library
- NVIDIA blog article
- GTC 2015 presentation on NCCL
- PTX (low-level instructions)
Nsight is NVIDIA’s integrated development environment:
NVIDIA also provide helpful guides on the Pascal architecture:
Useful presentations at NVIDIA’s 2017 GTC conference contain: