AMD Radeon RX 6000 die shot

Office Appointments

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

Syllabus

Fall 2025

Course Outline and Lectures

Topic Lectures and Coursework
Introduction to Parallel Programming Course Introduction
Discussion of course expectations and resources
Processor-Level Parallelism
Limitations on automated parallelism
Homework 1
Instruction-level dependencies and speedup
Software Development Platforms
Useful platforms for building heterogeneous software
Programming Assignment 1: GitHub UI Repository
Validating your build platform
Programming Assignment Introduction A.1 Ray Tracing
Ray tracing theory and implementation details
Programming Assignment 2: Ray Tracing
Ray tracing a sphere
Profiling and Memory CPU Profiling
Profiling tools, symbols, and optimization
Memory
Memory instructions, caches, and processor designs
Heat Equation
Case study in parallelizing partial differential equations
Multithreading Multithreading in C++
Using C++ std::thread with callback functions
A.2 Parallel Ray Tracing
Implementing a parallel path tracer using multithreading
Programming Assignment 3: Ray Tracing
Implement a multi-threaded version of the programming assignment
Thread Optimization
Discussion of how to optimize parallel applications
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