Parallel Programming (3:1)

The objective of this course is to give you some level of confidence in parallel programming techniques, algorithms and tools. At the end of the course, you would (we hope) be in a position to deal with real-life parallel  problems and to explore new avenues of research in the area of parallel programming.


  1. Santanu T
  2. Anwit Roy
  3. Abhishek Kolipaka
  4. Sharath Chandra
  5. Gowthami Gottipatti
  6. Rooparam Chaudhury
  7. M Aravind Krishnan
  8. Sreekanth Raja
  9. Priti Parate
  10. Rajendra Kumar
  11. Vaibhav Goel
  12. P Vinay Kumar
  13. Chandrakant Raj


Sathish Vadhiyar

Reading Materials

Additional Reading

Meeting Hours

  11:30-1:00;   Tuesday, Thursday; Room 202, SERC

Grading System


    1. Introduction ppt
    2. Parallel Programming Tools
      1. MPI - 1 ppt
        1. Collective communication implementations ppt
        2. MPI process groups and topologies
      2. MPI-2
        1. Overview ppt
        2. I/O Optimizations ppt
      3. GPU Programming
        1. Quick review ppt
        2. Obtaining High Performance on GPUs ppt
    3. Parallel Algorithms and Applications
    1. Parallel Linear algebra
      1. Dense LA - Gaussian elimination (different distributions), tridiagonal systems (divide and conquer algorithm)
      2. Sparse LA and relate graph algorithms - basics and sequential solutions; parallel steps for ordering, symbolic and numerical factorization, triangular solve; parallel graph partitioning; iterative methods; parallel graph coloring
    2. FFT ppt
    3. Molecular Dynamics ppt
    4. Population evolution or Game of Life ppt
    5. Cosmology ppt
    6. Mesh applications (e.g. finite element computations) ppt
    7. Parallel Bioinformatics ppt
    1. Parallel System Software
      1. Scheduling in Parallel Systems ppt
      2. Checkpointing and Fault tolerance for large systems ppt

Reading Material

Mid-Term Exams


  1. Collective communications and 2D Jacobi

  2. CUDA programming and optimizations

  3. Parallel Subcolumn Cholesky

  4. Load Balancing N-body Simulations

  5. Parallel Job Scheduling