This course focuses on the shared memory programming paradigm. It covers concepts & programming principles involved in developing scalable parallel applications. Assignments focus on writing scalable programs for multi-core architectures using OpenMP and C. This is an introductory course in shared memory parallel programming suitable for computer science as well as non-computer science students working on parallel/HPC applications and interested in parallel programming. INTENDED AUDIENCE : Computer Science and non-Computer Science Students with interest in parallel programming for HPC applications.PRE-REQUISITES : Students enrolling for this course should be comfortable with programming in C.INDUSTRIES SUPPORT : IBM, Intel, Amazon, Google, Microsoft, Cray
Week 1 : Single Processor Architecture and Basic OpenMP constructs & functionsWeek 2 : More OpenMP constructs & functionsWeek 3 : Basic Linear Algebra using OpenMP and OpenMP tasks (Assignment 1: Programming assignment to implement and evaluate blocked matrix multiply in OpenMP)Week 4 : Critical Sections, locks and Matrix Factorization using OpenMP (Assignment 2: Programming assignment to implement and evaluate task based algorithm for a BLAS routine).