CAS762

          CAS762 FUNDAMENTALS OF PARALLEL PROGRAMMING

 

Objectives:

  • To explore the concept of parallel programming and its importance.
  • To analyze and optimize the complexity of each parallel algorithm.
  • To familiarize parallel programming paradigms and techniques with introduction to CUDA tool.

 

Introduction-Parallel Programming Paradigms-Parallel Architecture- Case studies -Open MP-features and functions - PRAM Model of Computation

PRAM - Models of Parallel Computation, Complexity - Memory Consistency - Performance Issues - Parallel Program Design - Shared Memory and Message Passing – MPI -features and functions

Parallel programming models - Algorithmic Techniques - Decomposition Techniques - Mapping Techniques for load balancing - Algorithms for Matrix operations, Sorting and Searching.

Lower Bounds Lock Free Synchronization, Load Stealing - Lock Free Synchronization, Graph theoretic parallel algorithms

Case Study: CUDA - CUDA threads – CUDA memories - CUDA performance considerations– CUDA floating point considerations – CUDA applications.

 

 References:

 

1. M J Quinn, “Parallel Programming in C with MPI and OpenMP”, Tata McGraw-Hill Education, 2003.

          2.Ananth Grama, George Karypis, Vipin Kumar and Anshul Gupta, “Introduction to Parallel Computing”, 2nd Edition, Pearson Education, 2003.

          3.D. Kirk and W. Hwu, “Programming Massively Parallel Processors”, 2nd Edition, Morgan Kaufmann Publishers, 2010.

 

             Outcomes:

          Students will be able to:

                         Design and develop parallel algorithms.

                         Analyze the real world problems and implement in parallel environment