COURSE OBJECTIVES

– Learn about parallel and distributed computers.
– Write portable programs for parallel or distributed architectures using Message-Passing Interface (MPI) library
– Analytical modeling and performance of parallel programs.
– Analyze complex problems with shared memory programming with OpenMP

COURSE LEARNING OUTCOMES (CLO)

CLO: 1. Learn about parallel and distributed computers.
CLO: 2. Write portable programs for parallel or distributed architectures using Message-Passing Interface (MPI) library
CLO: 3. Analytical modeling and performance of parallel programs
CLO: 4. Analyze complex problems with shared memory programming with OpenMP.

COURSE CONTENTS


• Introduction to Parallel and Distributed Computing
• Flynn’s Taxonomy, Introduction to Multi-Threading
• parallel algorithms & architectures, parallel I/O
• programming models (data-parallel, task-parallel, process-centric, shared/distributed memory)
• Introduction to Parallel Programming using OpenMP
• performance analysis and tuning, scalability and performance studies
• scheduling, load balancing, memory consistency model, memory hierarchies,
• Case Studies: From problem specification to a parallelized solution
• GPU architecture and programming, heterogeneity, Introduction to OpenCL
• power and energy consumption storage systems, and synchronization
• Message passing interface (MPI),
• concurrency control
• fault tolerance, interconnection topologies
• Asynchronous/synchronous computation/communication, concurrency control, fault tolerance,
• Advanced topics in parallel and Distributed computing