CS751 Parallel Computing

Elective for M.Tech.-I, III Sem. and MCA-III, V Sem.

Instructors: Dr. Rajeev Wankar

(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:
 

  1. Should be able to understand parallel algorithm paradigms and design efficient parallel algorithms.
  2. Given a practical application, identify the related issues and should be able to write algorithms for the target machine.
  3. 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:


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