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.

Class

PPP Class 2012

Instructor

Sathish Vadhiyar

Reading Materials

Additional Reading

Meeting Hours

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

Grading System

Syllabus

    1. Prerequisites - Introduction, MPI
    2. Parallel Programming tools/languages/models - 1
      1. MPI - collective communication implementations, communicator groups, process topologies
      2. OpenMP
    3. Applications - Basic
      1. Dense and Sparse Linear Algebra
      2. FFT
      3. Molecular Dynamics
      4. Population evolution or Game of Life
    4. Parallel Programming tools/languages/models - 2
      1. MPI-2
      2. Parallel I/O optimizations
      3. GPU programming - CUDA review, CUDA optimizations, advanced CUDA
      4. OpenCL - class ppt, lecture 5 from open university kit
      5. Charm++ - ppt
    5. Applications - Advanced
      1. Cosmology/n-body simulations ppt
      2. Mesh applications ppt
      3. List algorithms with GPUs ppt
    6. Parallel Programming tools/languages/models - 3
      1. Software Transactional memory, Galois (Guest Lecture by Dr. Uday Reddy, CSA)
    7. Parallel System Software
      1. Scheduling in Parallel Systems ppt
      2. Checkpointing and Fault tolerance for large systems ppt

Reading Material

Mid-Term Exams

Assignments

  1. Assignment 1 - Collective Communications and Open MP

  2. Assignment 2 - Matrix Multiplication

  3. Assignment 3 - Parallel Ordering

  4. Assignment 4 - MPI I/O and CUDA Optimizations

  5. Assignment 5 - Load balancing using space filling curves (SFCs)