Prefer to read without ads? Become a member — from $10/month — and support the work. Already a member? Log in to read ad-free on this device.

1.4 Simplified CPU/GPU Model

Most CUDA programming is based on a simple, abstract hardware model, as shown in Figure 1-1.

The CPU runs most of the application software, the operating system, and the CUDA driver software that operates the GPU.

The GPU is a peripheral that can run select parallel programs (called “kernels”). Generally the GPU has its own dedicated “device memory”; input data must be copied to device memory in order for the GPU to process it, and the GPU output must be copied from device memory. Usually these data copies are performed over the PCI Express bus.

Figure 1-1. CPU GPU Architecture

Following CUDA terminology, we will interchangeably use the terms “CPU” and “host”, “GPU” and “device.”

The remainder of Part I gives architectural overviews of CUDA hardware and software:

In Part II, Chapters 5-10 will cover various aspects of the CUDA programming model in great depth:

Finally, in Part III, Chapters 11-16 will discuss various targeted CUDA applications: