ECE 6340 - Parallel and Heterogeneous Computing

Office Appointments
W324 Engineering Building 1 Online and In-Person appointments via Calendly
Syllabus
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 |