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 AUDIENCEComputer Science and non-Computer Science Students with interest in parallel programming for HPC applications.
PRE-REQUISITESStudents enrolling for this course should be comfortable with programming in C.
INDUSTRIES APPLICABLEIBM, Intel, Amazon, Google, Microsoft, Cray.
COURSE LAYOUT 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).