CS - 687 Parallel and Distributed Computing
CS - 687 Parallel and Distributed Computing
CS - 687 Parallel and Distributed Computing
Course Description:
Asynchronous/synchronous computation/communication, concurrency control, fault
tolerance, GPU architecture and programming, heterogeneity, interconnection
topologies, load balancing, memory consistency model, memory hierarchies, Message
passing interface (MPI), MIMD/SIMD, multithreaded programming, parallel algorithms
& architectures, parallel I/O, performance analysis and tuning, power, programming
models (data parallel, task parallel, process-centric, shared/distributed memory),
scalability and performance studies, scheduling, storage systems, synchronization, and
tools (Cuda, Swift, Globus, Condor, Amazon AWS, OpenStack, Cilk, gdb, threads,
MPICH, OpenMP, Hadoop, FUSE).
Course Objective:
– 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
Teaching Methodology:
Lectures, Assignments, Presentations, etc. Major component of the course should be
covered using conventional lectures.
Courses Assessment:
Exams, Assignments, Quizzes. Course will be assessed using a combination of written
examinations.
Reference Materials:
Distributed Systems: Principles and Paradigms, A. S. Tanenbaum and M. V. Steen,
Prentice Hall, 2nd Edition, 2007
Distributed and Cloud Computing: Clusters, Grids, Clouds, and the Future Internet, K
Hwang, J Dongarra and GC. C. Fox, Elsevier, 1st Ed.
Week/Lecture # Theory
Week 1 Lect- I & Lect-II Introduction, Parallel and Distributed Computing
Parallel and Distrubuted Architectures, Socket
Week 2 Lect-I & Lect-II programming, Flynn’s Taxonomy, Introduction to Multi-
Threading
Week 3 Lect-I & Lect-II Parallel Algorithms & architectures, parallel I/O
Parallel algorithms(data-parallel, task-parallel, process-
Week 4 Lect-I & Lect-II centric, shared/distributed memory)
performance analysis and tuning, scalability and
performance studies
Week 5 Lect-I & Lect-II
Scalable Algorithms, Message Passing
Week 6 Lect-I & Lect-II MPI and Teragrid
scheduling, load balancing, memory consistency model,
Week 7 Lect-I & Lect-II memory hierarchies, Distributed Systems, MapReduce,
Clusters
C GPU architecture and programming, heterogeneity,
Introduction to OpenCL ase Studies: From problem
Week 8 Lect-I & Lect-II specification to a parallelized solution.
Distributed Coordination, Security
Mid Term Exam
Week 9 Lect-I & Lect-II Distributed File Systems, Security
Week 10 Lect-I & Lect-II DFS
Week 11 Lect-I & Lect-II Distributed Shared Memory, Peer-to-Peer
power and energy consumption storage systems, and
Week 12 Lect-I & Lect-II synchronization