Here are a list of study materials that I highly recommend:
TextBooks
  - Encyclopedia of Parallel Computing
 
  - A comprehensive book about key concepts in parallel computing. Entries are all written by established researchers in the field.
 
  - Optimizing Compilers For Modern Architectures; A Dependence Based Approach
 
  - A classic textbook on auto-parallelization and locality optimizations.
 
Online Courses
  - UC Berkeley CS267 - Applications of Parallel Computers
 
  - A great course covering an overview of the parallel architecture, some of the most popular parallel programming tools and a broad set of parallelization strategies.
 
  - MIT 6.172 - Performance Engineering of Software Systems
 
  - Topics include performance analysis, algorithmic techniques for high performance, instruction-level optimizations, caching optimizations, parallel programming, and building scalable systems.
 
CUDA Programming Tutorials
  - CUDA Training Series
 
  - The best CUDA tutorial for beginners I've ever seen. Recordings are available for each chapter.
 
  - Intro to Parallel Programming
- 
    
  - A great online course by Prof. David Owens that covers fundamental ideas of parallel programming, and teaches CUDA programming. The interview parts is a bonus.
 
Historical Perspectives
  - Parallel Processing, 1980 to 2020
 
  - A historical survey of parallel processing by Robert Kuhn and David Padua.
 
Seminars (Latest Research Topics)
  - SPCL Bcast
 
  - An online seminar series that covers a broad range of topics around parallel and high-performance computing, scalable machine learning, etc from SPCL at ETH.
 
  - MIT Fast Code Seminar
 
  - A great seminar series on the theory and practice of performance engineering.