GPU programming with CUDA asks you to think differently: instead of one fast thread, you orchestrate thousands of slow ones, and performance hinges on memory hierarchy and how work maps to the hardware. That shift is why reading order matters. Start with a dense architecture text and you will drown; start with gentle examples and you build intuition before rigor.
This path eases you in, then teaches the underlying parallel-computing principles, then goes deep on application design and reference material.
Ease into the model
Start with CUDA by example, the classic gentle introduction that gets you writing working kernels quickly and building intuition for the programming model. Then Programming Massively Parallel Processors is the essential next step, teaching the principles of parallel computing and how GPU architecture shapes the code you write. These two give you a real foundation.
Design real applications
Move into building substantial programs with Parallel Programming in CUDA C, which deepens your command of the language and its patterns, and CUDA application design and development, which addresses structuring larger, performant applications. This is where you learn to profile, optimize, and reason about the memory hierarchy that dominates GPU performance.
Go deep and broaden
For advanced techniques across domains, GPU Computing Gems Emerald Edition collects real high-performance case studies you can learn from. Because so much GPU work is numerical, NUMERICAL RECIPES IN C grounds you in the algorithms you will be accelerating. Finish with The Cuda Handbook A Comprehensive Guide To Gpu Programming, the thorough reference you grow into as your programs get more demanding.
Read in this order and CUDA changes from an intimidating black box into a set of principles you can apply to real numerical and data-parallel problems. Follow the full path to keep the sequence.