MPPRS

CSE595 OVERVIEW

Multicore processors are now universal, from mobile devices to supercomputers. Achieving high performance and energy efficiency on these architectures requires both a deep understanding of parallel programming models and the runtime systems that underpin them. This course covers the foundations of parallel programming — task parallelism, data parallelism, loop parallelism, and synchronization — alongside the design of the runtime systems that schedule and manage parallel work. Topics include work-stealing schedulers, NUMA-aware runtimes, user-level threading, memory consistency, cache coherency, SIMD vectorization, GPU computing, and power management. The course is offered at IIIT Delhi for undergraduate and postgraduate students. Students interested in taking this course should have prior experience with C/C++ programming.


LECTURE TOPICS


  1. Introduction to MPPRS [PDF]
  2. Introduction to Parallel Programming [PDF]
  3. Concurrency Decomposition [PDF]
  4. Productivity in Parallel Programming [PDF]
  5. Computation Graphs and Ideal Parallelism [PDF]
  6. Greedy Scheduler [PDF]
  7. Task Scheduling Paradigms [PDF]
  8. Loop Level Parallelism [PDF]
  9. Mutual Exclusion in async-finish Programs [PDF]
  10. Futures, Promises, and Data Driven Tasks [PDF]
  11. Non Uniform Memory Access Architecture [PDF]
  12. Hierarchical Place Trees [PDF]
  13. Parallel Programming with OpenMP [PDF]
  14. Mid Semester Review [PDF]
  15. Sequential Overheads from Task Granularity [PDF]
  16. Sequential Overheads from Concurrent Deque [PDF]
  17. Context Switching Inside the User Space [PDF]
  18. User Level Threads [PDF]
  19. Parallel Programming using SIMD Vector Units [PDF]
  20. Introduction to GPU Computing [PDF]
  21. Power Management in Multicore Processors [PDF]
  22. Introduction to Memory Consistency [PDF]
  23. Language Memory Model [PDF]
  24. Cache Coherency and False Sharing [PDF]
  25. Miscellaneous Topics in Multicore Parallel Programming [PDF]
  26. End Semester Review [PDF]

ASSESSMENT PLAN


  • Quizzes (10%)
    Quizzes happen roughly after every four to five lectures. Each quiz is of 20 minutes duration and is scheduled during the lecture hours towards the end of the lecture. The quiz consists of multiple-choice questions, fill in the blanks, and reasoning based questions.
  • Proctored labs (20%)
    Hands-on lab sessions held under proctored conditions. Students write and debug parallel programs on multicore systems, applying concepts covered in lectures.
  • Project (20%)
    The project is released after week two and runs throughout the semester. Projects teach parallel programming techniques and runtime design for achieving performance and energy efficiency over modern multicore processors.
  • Midterm exam (20%)
  • Endterm exam (30%)

HELPFUL RESOURCES


INSTRUCTOR

Vivek Kumar