FPP

OVERVIEW

Multicore processors are ubiquitous. It is an unavoidable consequence of the breakdown of Dennard scaling, which has put a stop to hardware delivering ever faster sequential performance. Hence, it is essential to parallelize the software applications running on these multicore processors for achieving high performance. FPP introduces the fundamentals of parallel programming. It covers both the traditional approaches and new advancements in the area of parallel programming. A key aim of this course is to provide hands-on knowledge on parallel programming by writing parallel programs in different programming models taught in this course. This course is offered in the spring semester at IIIT Delhi for undergraduate and postgraduate students. Students interested in taking this course should have prior experience with C/C++ programming.


NEWS

Recently a paper on the FPP course was published at the EduHiPC workshop. This workshop is a part of the NSF/IEEE TCPP's (Technical Committee on Parallel Processing) curriculum initiative on parallel and distributed computing for computer science undergraduates [links: paper, slides, video].


LECTURE TOPICS



  1. Course overview, dos and don'ts [PDF]
  2. Refresher on processes and threads, Pthread programming [PDF]
  3. Introduction to parallel architectures and programming models [PDF]
  4. Concurrency decomposition [PDF]
  5. Introduction to dynamic tasks creation and termination, async-finish programming model [PDF]
  6. Introduction to Habanero C/C++ library (HClib), computation graphs and ideal parallelism [PDF]
  7. Greedy scheduling of computation graph on a fixed number of processors, template of a library-based thread-pool runtime [PDF]
  8. Dynamic task scheduling using work-sharing and work-stealing [PDF]
  9. Work-first and help-first work-stealing [PDF]
  10. Loop-level parallelism and false sharing [PDF]
  11. Mutual Exclusion in async-finish Program [PDF]
  12. Mid semester review [PDF]
  13. Task affinity with Hierarchical Place Trees (HPT) [PDF]
  14. Futures, Promises and Data-Driven Tasks [PDF]
  15. Cilk language and runtime [PDF]
  16. Java TryCatch work-stealing [PDF]
  17. Introduction to OpenMP [PDF]
  18. Work-sharing constructs in OpenMP [PDF]
  19. Task parallelism in OpenMP [PDF]
  20. Introduction to distributed memory parallel programming using the Message Passing Interface (MPI) [PDF]
  21. Point-to-point communications in MPI [PDF]
  22. Collective communications in MPI, hybrid parallelism by using OpenMP in MPI [PDF]
  23. Parallel programming in Partitioned Global Address Space (PGAS) [PDF]
  24. End semester review [PDF]
  25. Research seminar-1
  26. Research seminar-2

ASSESSMENT PLAN



  • Take home assignments (10%)
    There are two assignments. Assignment-2 is a pair-programming based assignment. The output of assignment-1 serves as the input of assignment-2.
  • Pair programming based project (25%)
    Projects are released immediately after the midterm exams. The projects are aimed to teach runtime techniques for achieving high performance in task-based parallel programming model. We provide a set of pre-published conference papers and allow each student group to choose a research paper from these options. There are three intermediate deadlines for course project.
  • Lab programming (5%)
    Labs in FPP are short programming exercises that the student has to complete within 90 minutes in the presence of TAs. In each lab, we provide the student with a partially in-complete program. Students have to add parallelism to this program as per the supplied description. We follow N-1 policy for lab evaluation.
  • Quizzes (10%)
    Quizzes happen roughly after every four 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. We follow N-1 policy for quiz evaluation.
  • Midterm exam (20%)
  • Endterm exam (30%)

HELPFUL RESOURCES


PAST OFFERINGS


  • 2022 (to be offered in hybrid mode)
  • 2021 (online mode)
  • 2020
  • 2019
  • 2018
  • 2017

STUDENT FEEDBACK


Student feedback on a scale of 1-5

INSTRUCTOR

Vivek Kumar

Copyright © 2021. IIIT-Delhi