CS751 Parallel Computing
(Year 2015)
Objective: This course is
proposed for M.Tech. (CS/AI) and MCA-V students. By the end of
the semester, students should be able to develop the following skills:
- Should be able to understand parallel algorithm paradigms and design efficient parallel algorithms.
- Given a practical application, identify the related issues and should be able to write algorithms for the target machine.
- Develop skill to learn how to write parallel library.
More specific objectives will also be given later for each lecture.
Prerequisite: Knowledge
of Introductory Algorithms, Networks, Java/C/C++, and Unix/Linux, good
if you know socket programming.
Course Outline: Here is a
preliminary and non-exhaustive list of topics we will be or might be
covering. This is subject to change with advanced notice, partly based
on the understanding of the students.
Units |
Class Notes Downloads |
Introduction
to Parallel
Computing: Why Parallel Computing & Scope of Parallel
Computing, Sieve of Eratosthenes, Control and Data Approach, PRAM
model
of parallel computation, Design paradigms of Parallel Computing,
examples.
|
|
Classification: Flynn's
Taxonomy, MPP, SMP, CC-NUMA, Clustering of Computers, Beowulf
Cluster, Use of MPI in Cluster Computing. Debugging, Evaluating and
tuning of Cluster Programs, Partitioning and Divide and Conquer
Strategies. Cluster: dedicated high performance (HP),
high availability (HA), CoPs, PoPs, CoWs; distributed, on-demand,
high-throughput, collaborative, data-intensive computing,
Interconnection networks.
|
|
An overview of Parallel
Programming Paradigms: Foster's design paradigm for
Multi computing programming, Programmability Issues, Programming
Models:
Message passing, Message passing standards: PVM
(Parallel Virtual Machine), MPI (Message Passing Interface) Message
Passing Interface (MPI) and its routines, Advanced Features of MPI: MPI
advanced point-to-point communication MPI Communication modes; MPI
Collective Communication and Computations; MPI Derived Data types.
|
|
Overview of Programming
with Shared Memory: OpenMP (History, Overview, Programming
Model, OpenMP Constructs, Performance Issues and examples, Explicit
Parallelism: Advanced Features of OpenMP)
|
|
Multi-Core
programming:
Introduction to Multi cores Programming Software Multi-threading
using Tread Building Blocks (TBB) and Cilk++ programming
|
Assignments: Students will be given assignments based on the course contents. They are expected to:
- Built cluster using Rocks.
- Write Cluster Based algorithms and applications for Sorting, Numerical Algorithms like Matrix Addition, Matrix Multiplication, Solving linear system, Image Processing Algorithms.
- Do Shared Memory Programming on SMP machines.
- Write some parallel library using socket programming in C or Java.
Assessments: Internal: 40
Marks
Three internals of 20 marks each
(best two selected and marks scaled down to 30)
Lab
assignments (10) marks
External: End semester
examination 60 Marks.
Lecture Schedule:
Days |
Time |
Venue |
Thursday Friday |
11:00-01:00
PM 5:00-6:00
PM |
LHCR9 |