AMD Radeon RX 6000 die shot

Office Appointments

W324 Engineering Building 1 Online and In-Person appointments via Calendly

Syllabus

Fall 2026

Course Outline and Lectures

Topic Lectures and Coursework
Intro to Parallel Computing Course Introduction
Discussion of course expectations and resources
Processor-Level Parallelism
Limitations on automated parallelism
(PDF) HW 1: Instruction-level dependencies and speedup
Software Development Platforms
Useful platforms for building heterogeneous software
(C++) PA 1: Validate your build platform with a parallel Mie simulation
Profiling and Memory B.1 Memory
Discussion of basic memory architecture, specifically as it relates to speed and parallelism. This includes memory instructions, caches and caching strategies, as well as how processors address memory latency with hyperthreading.
(PDF) HW 2: Paradigms and memory (vocabulary)
(PDF) HW 3: Cache planning B.2 CPU Profiling
Describes basic CPU timing, including high-resolution timers available in C++. This lecture also covers different debugging and optimization methods, with a focus on debugging via tracing and profiling using sampling.
(C++) Profiling Demo: Debugging symbols, tracing, and sampling
Parallel Problems C.1 Ray Tracing
This lecture provides an overview of ray tracing, including its history and challenges with parallelization.
C.1a Path Tracing Implementation
We cover the basic mathematics behind path tracing - a method for solving the ray tracing problem using Monte-Carlo integration. I’ll discuss algorithms for implementing a path tracer as a class module.
(C++) Ray Tracing Template: Starting code for PA2 - PA4
Fluid Dynamics
N-Body Simulations
Multithreading D.1 C++ Multithreading
Using C++ std::thread with callback functions
(PDF) HW 4
Multithreading Strategies
Strategies for basic parallelization in ray tracing, fluid dynamics, and n-body simulations
D.2 Heat Equation
Case study in parallelizing partial differential equations
(PDF) HW 5
Thread Optimization
Discussion of how to optimize parallel applications
D.4 OpenMP
*OpenMP programming in C/C++**
Graphics Processing Units Graphics Processors
Evolution and architecture of GPUs
CUDA Application Programming Interface
API calls for querying devices and accessing global memory
CUDA API Libraries
NVIDIA GPU implementations of common numerical libraries
CUDA Threads and Kernels
CUDA language and how kernels are implemented and run on GPUs
CUDA Thrust
Standard CUDA template library structures and functions
CUDA Thread Scaling
Designing scalable programs and kernels