NOC:Introduction to Parallel Programming in OpenMP


Lecture 1 - Introduction to Parallel Programming


Lecture 2 - Parallel Architectures and Programming Models


Lecture 3 - Pipelining


Lecture 4 - Superpipelining and VLIW


Lecture 5 - Memory Latency


Lecture 6 - Cache and Temporal Locality


Lecture 7 - Cache, Memory bandwidth and Spatial Locality


Lecture 8 - Intuition for Shared and Distributed Memory architectures


Lecture 9 - Shared and Distributed Memory architectures


Lecture 10 - Interconnection networks in Distributed Memory architectures


Lecture 11 - OpenMP: A parallel Hello World Program


Lecture 12 - Program with Single thread


Lecture 13 - Program Memory with Multiple threads and Multi-tasking


Lecture 14 - Context Switching


Lecture 15 - OpenMP: Basic thread functions


Lecture 16 - OpenMP: About OpenMP


Lecture 17 - Shared Memory Consistency Models and the Sequential Consistency Model


Lecture 18 - Race Conditions


Lecture 19 - OpenMP: Scoping variables and some race conditions


Lecture 20 - OpenMP: thread private variables and more constructs


Lecture 21 - Computing sum: first attempt at parallelization


Lecture 22 - Manual distribution of work and critical sections


Lecture 23 - Distributing for loops and reduction


Lecture 24 - Vector-Vector operations (Dot product)


Lecture 25 - Matrix-Vector operations (Matrix-Vector Multiply)


Lecture 26 - Matrix-Matrix operations (Matrix-Matrix Multiply)


Lecture 27 - Introduction to tasks


Lecture 28 - Task queues and task execution


Lecture 29 - Accessing variables in tasks


Lecture 30 - Completion of tasks and scoping variables in tasks


Lecture 31 - Recursive task spawning and pitfalls


Lecture 32 - Understanding LU Factorization


Lecture 33 - Parallel LU Factorization


Lecture 34 - Locks


Lecture 35 - Advanced Task handling


Lecture 36 - Matrix Multiplication using tasks


Lecture 37 - The OpenMP Shared Memory Consistency Model