GPUs: Hardware to Software
Perri Needham, Andreas W. Götz, Ross C. Walker · 2016
This chapter discusses the architectural design of graphics processing unit (GPU), programming models and how they map to hardware, and basic GPU programming concepts. It presents an overview of the currently available GPU-accelerated software libraries as well as design features of modern GPUs that simplify their programming and make attaining good performance easier. In the CUDA programming model, functions within the code are offloaded to the GPU as kernels. GPU programming adds new concepts to the fundamentals of parallel programming. GPU programming can be broken down into two stages namely, porting and optimization. GPU technology is still an emerging field in the world of high-performance computing (HPC) with a steep growth curve, the benefit of which is fast-paced innovation and improvement of features. Some of the more recent GPU features available at the time of writing are Hyper-Q technology, Multi-Process Service (MPS), Unified Memory, and NV Link.