This repository aims to currate resources to learn CUDA programming. Categories of resources include textbooks, seminars, free online courses and coding challenges. Users should be able to follow along the practice material and check this repository for solutions with thorough explinations. This project is just getting started, any feedback or suggestions are more than welcome. Also included are "Leetcode" style websites for daily practice writing kernel functions (GPU code).
This section follows several tutorials and reference guides for CUDA development. Below is the list of tutorials currently covered:
- CUDA Tutorial by ReadTheDocs: A beginner-friendly guide introducing CUDA basics, memory management, and kernel execution. It covers two simple but essential exercises, "Hello World" and vector addition using GPU hardware. This should take around 1 day to complete and provides a basic introduction to GPU programming.
- Parallel Computing CUDA C: Another beginer-friendly guide to introduce CUDA basics. Resource introduces thses concepts over 14 chapters and includes seven hands on excerises to help build a working knowledge. Topics covered include: hardware architecture, data streams and expected bottlenecks, as well as tools for profiling preformenace. This should take 1-2 weeks to complete and provides a more thorough introduction to GPU programming.
- Learning Path: From Basics to Advanced CUDA Programming: This provides a comprehensive intro duction to CUDA programming. It includes C/C++ tutorials, data structures, and parallel programming. It also covers useful CUDA libraries, frameowrks, and suggests coding challenges at the end (these may be listed in other parts of this repository). Some resources are free and some are paid. Please take what is useful to you.
NOTE: I have not gone through all these resources yet, this information is subject to change. Suggestions for alternative resources are welcome.
- daily-cuda: 30 days of exercises to apply knowledge of GPU kernel development.
This section lists several websites that provide a platform for daily practice of GPU programming:
-
LeetGPU: GPU-focused programming challenges.
-
Compiler Explorer: Online compilation test bed. NOTE: need to confirm/test GPU compilation.
-
GPU Puzzles: Additional and creative/challenging GPU practice problems. NOTE: this may be moved to another section depending on future impressions.
-
100 Days of GPU: Documents 100 days of GPU learning.
-
CUDA 120 Days Challenge: Daily coding challenge with a community for support (clout).
Coming soon:
- CUDA kernel development
- Performance profiling
- Parallel algorithm implementation
- Benchmarks and documentation