- Lecture 1: Introduction I
- Lecture 2: Introduction II
- Lecture 3: OpenMP Programming I
- Lecture 4: OpenMP Programming II
- Lecture 5: OpenMP Programming III
- Lecture 6: OpenMP Programming IV
- Lecture 7: OpenMP Programming V
- Lecture 8: OpenMP Programming VI
- Test #1 [Feb 4, 2025]
- Lecture 9: POSIX Thread Programming I
- Lecture 10: POSIX Thread Programming II
- Lecture 11: POSIX Thread Programming II
- Lecture 12: POSIX Thread Programming IV
- Lecture 13: POSIX Thread Programming V
- Lecture 14: POSIX Thread Programming VI
- Lecture 15: POSIX Thread Programming VII
- Test #2 [Mar. 6, 2025]
- Lecture 16: OpenCL Programming I
- Lecture 17: OpenCL Programming II
- Lecture 18: Heterogeneous Computing
- Lecture 19: Parallel Programming & AI
- Lecture 20: Parallel Programming & AI
- Lecture 21: Parallel Programming & AI
- Test #3 [April 3, 2025 – take home]
LECTURE 1: INTRODUCTION I
- Overview of course material. What is concurrency and why is it important? Concurrency and the free lunch.
- Slides: [PDF]
- Readings:
LECTURE 2: INTRODUCTION II
- Overview of a parallel architecture taxonomy. Data-level vs. thread-level parallelism.
- Slides: [PDF]
LECTURE 3: OpenMP Programming I
- Introduction to implicit parallelism and OpenMP programming in C.
- Exercises:
- helloworld.c – a first C program with OpenMP
- Readings:
- A “Hands-on” Introduction to OpenMP – slides 1-39
- Whiteboard:
LECTURE 4: OPENMP PROGRAMMING II
- Programming OpenMP with C using barriers.
- Exercises:
- helloworld_v2.c, helloworld_v3.c, helloworld_v4.c– an example of parallelization using a barrier.
- barrier_grades.c – a more detailed example of parallelization using a barrier to separate two calculations involving grades.
- Readings:
- Whiteboard:
LECTURE 5: OPENMP PROGRAMMING III
- Debugging/testing strategies for an OpenMP programs. Programming OpenMP with C using the parallel directive and a critical region.
- Exercises:
- barrier_grades_bugfree.c – a bug-free version of barrier_grades.c from last class.
- barrier_grades_v2.c – a complete version of the program that includes both the generation of grades and the calculation of a running average of grades that uses a critical region.
- barrier_grades_v3.c – a version of the program that calculates the average of grades at the end of the program.
- Reading:
- A “Hands-on” Introduction to OpenMP – Unit 2, slides 40-91