GPUsCUDA
Learning CUDA with PMPP, Part 0: Setting the Stage
My motivation and goals for learning massively parallel programming through PMPP, Fifth Edition.
This series follows my learning journey through the fifth edition of Programming Massively Parallel Processors. My motivations and goals for this likely difficult but rewarding journey are as follows:
- Becoming a better developer and engineer. I enjoy the reward of executing code, seeing a problem solved, and achieving a specific engineering objective. Covering this book—or at least a relevant portion of it—completing the exercises, and implementing the different code and algorithms will make me a better developer. Practice makes perfect.
- I like GPUs. This comes partly from my previous experience gaming, my NVIDIA fandom, building a PC with an RTX 5070, and the sheer size of the component in a machine. I want to learn how to make them go brrr.
- Low-level systems programming. As I have gained more experience in computer science, I have developed a fascination with computer architecture and getting close to the hardware. Layers of abstraction provide a lot of convenience; however, you lose information about what the machine is actually doing. This knowledge is important for improving code performance and even security.
- AI and machine learning. I have gained significant machine learning experience through my research and studies. Staying only at the PyTorch or framework level and executing notebooks is sufficient for implementing research; however, I want to work on optimizing machine learning algorithms and making AI more accessible to people with cheaper compute. PMPP will give me hands-on experience implementing parallel algorithms. I can do more good for my community and squeeze more juice out of the limited compute fruit that many communities have to make do with.