Comment by CalmDream
I think this might be good introduction to GPU programming: https://builds.modular.com/puzzles/introduction.html. It explains gpu concepts in an hardware agnostic way and verify understanding with implementation puzzle. It is based on https://github.com/srush/GPU-Puzzles but is CUDA specific.