Section outline

  • 1. Introduction to GPU Computing

     
    • This first section will provide an introduction to the history of GPU computing, architectural differences between CPUs and GPUs, the Nvidia CUDA software stack, and an overview of the various approaches for developing software for Nvidia GPUs.

      Learning objectives

      By the end of this section you will be able to:

      1. Understand the history of GPU computing and why it is useful in modern high performance computing.
      2. State the main differences in hardware architecture between CPUs and GPUs.
      3. Evaluate when GPU offloading could be beneficial and when to keep code or data on the CPU.
      4. Recognise Nvidia's key GPU terminology, such as streaming multi-processors (SM).
      5. Understand the CUDA eco-system.
      6. Define multiple approaches for GPU computing and when each could be applied.
      7. State the recommended process of accelerating code on GPU using the different tools in the CUDA eco-system.
    • Summary

      In this section we have introduced the scope and origins of GPU computing, and its relationship to CPU compute and Moore's Law.

      CPUs and GPUs can be used in conjunction, with parallelised sections of code being "offloaded" to the GPU for execution, reducing compute time.

      There are a number of frameworks and profiling tools that can help with offloading and code optimisation, which will be introduced throughout the course.