LENGTH: 1/2 day
This course will provide a contemporary survey of GPGPU computing as well as an introduction to GPGPU programming. Graphics processing units have traditionally been difficult to implement as co-processor accelerators due to their specialized nature, but recent hardware improvements and software development platforms have emerged that dramatically reduce the amount of effort required to utilize these devices in an HPC environment. The GPU architecture and how it relates to program development and performance will be covered, as well as an overview of research areas where GPGPU computing is starting to make an impact. This course will also address programming GPUs for use in general purpose computation, including a focus on issues such as explicit memory management and massively parallel algorithms, as well as limitations that one may encounter and what types of applications are best suited to being ported to the GPU.
Familiarity with C/C++ and shared memory parallel programming would be
beneficial, but are not necessary.
Basic familiarity with the bash/csh shell and a CLI text editor (nano, vi, emacs) is necessary for the LAB portion.
Hands-on exercises using the NVIDIA CUDA SDK.