GPUs and CUDA¶
Getting started¶
- NVIDIA blog: An Even Easier Introduction to CUDA (Mark Harris)
- CUDA Refresher
- Getting Started with CUDA and Parallel Programming (video)
Understanding¶
- MolSSi - Fundamentals of Heterogeneous Parallel Programming with CUDA C/C++
- Cornell Virtual Workshop - Understanding GPU Architecture
- NVIDIA blog: How to Optimize Data Transfers in CUDA C/C++ (Mark Harris)
- NVIDIA blog: How to Overlap Data Transfers in CUDA C/C++ (Mark Harris)
- NVIDIA blog: How to Implement Performance Metrics in CUDA C/C++ (Mark Harris)
- Roofline performance model (NERSC)
Resources¶
-
The Future Is Tiled: Using CuTile and TileIR To Write Portable, High-performance GPU Kernels (video)
-
CUDA programming guide: https://docs.nvidia.com/cuda/cuda-c-programming-guide/
- CUDA toolkit documentation: https://docs.nvidia.com/cuda/index.html
- CUDA toolkit documentation - CUB: https://docs.nvidia.com/cuda/cub/index.html
- CUDA toolkit downloads: https://developer.nvidia.com/cuda-toolkit-40
-
CUDA zone: https://developer.nvidia.com/cuda-zone
-
Table of CUDA GPU Compute Capability: https://developer.nvidia.com/cuda-gpus
- Matching CUDA arch and CUDA gencode for various NVIDIA architectures: https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/