High Performance Computing and GPU Programming

Instructor: Ben Zimmerman (bzimmer@iastate.edu)

This course is designed to introduce high performance graphics processing unit (GPU) programming using Compute Unified Device Architecture (CUDA). A background in computer programming is recommended, but not required. We will explore optimization techniques for both central processing unit (CPU) and GPU computing, but the emphasis is in GPU programming. Once completed, you will be able to write your own GPU programs and apply proper optimization techniques to achieve peak performance.

We will cover central processing unit (CPU) and GPU architecture, computer memory and access, pointers and their benefits, introduce the concept of GPU CUDA computing, explore GPU memory types, and cover beginner, intermediate, and advanced optimization techniques for GPU code.

Lecture 1: CPU and C++ Review with CUDA Introduction

Lecture 2: GPU Core

Lecture 3: GPU Application

Lecture 4: GPU Optimization Part 1