Abstract
Description: Modern GPUs (Graphics Processing Units) are now fully programmable many-core processors that offer unprecedented levels of floating point performance. They brings terascale computing to the laptop, and petascale computing to clusters. This lecture will consist of two parts, for the first half we will motivate why GPU computing is worthwhile for high-performance computing, and briefly look at various approaches to program GPUs, including the well-known CUDA and OpenCL libraries. The second half will detail algorithmic design for GPUs and best practices for benchmarking, validating and profiling GPU programs. Target audience: Scientists with interest in GPU computing. Prerequisites: Some programming experience