Class hours: WedFri 10:30-12:00 PM in KD 102
Name | Swarnendu Biswas |
swarnendu AT cse.iitk.ac.in |
Name | Email (AT cse.iitk.ac.in) |
Vipin Patel | vipinpat |
Nibir Baruah | nibir |
To obtain good performance, one needs to write correct but scalable parallel programs using programming language abstractions like threads. In addition, the developer needs to be aware of and utilize many architecture-specific features like vectorization to extract the full performance potential. This course will discuss programming language abstractions with architecture-aware development to learn to write scalable parallel programs. This is not a “programming tips and tricks” course.
We will have five or more assignments to use the concepts learned in class and appreciate the challenges in extracting performance.
Prerequisites |
|
The course will primarily focus on the following topics.
I am open to constructive feedback about the course content and presentation. Feel free to provide suggestions for improvements.
Class participation/quizzes | 5% |
Assignments | 40% |
Midsem | 25% |
Endsem | 30% |
Date | Topic | Resources | Recommended Reading |
---|---|---|---|
First Course Handout |
|||
02/08 | Compiler Challenges for Parallel Architectures | Slides | AK Chap 1 |
04/08 (online), 11/08 | Write Cache-Friendly Code | Slides |
CSAPP Chap 6 HP APP B DRAG 11.1, 11.2 |
12/08 (extra), 16/08 | Dependence Testing | Slides |
DRAG 11.3, 11.4, 11.6 AK Chap 2 |
POSIX Threads | Slides |
PP Chapter 4 (IITK has subscribed to the ebook) OSTEP Thread API, Condition Variables LLNL Pthreads Tutorial |
|
18/08, 23/08, 25/08 | Loop Transformations | Slides |
AK 5.2-5.4, 5.7.2, 5.9, 6.2.1, 6.2.2, 6.2.5, 6.3.1-6.3.4 AP 4.1, 4.2, 4.5, 5.1-5.6 HP 4.5 Compiler Transformations for High-Performance Computing |
25/08, 30/08, 01/09 | Vectorization | Slides |
HP 4.3 Intel oneAPI DPC++/C++ Compiler Developer Guide and Reference Intel C++ Compiler Classic Developer Guide and Reference Guide for Intel Compilers |
06/09, 08/09, 13/09, 15/09 | OpenMP | Slides |
OpenMP Application Programming Interface v5.2 OpenMP Application Programming Interface Examples v5.2.1 PP Chapter 5 (IITK has subscribed to the ebook) LLNL OpenMP Tutorial |
27/09, 29/09, 04/10, 06/10, 11/10, 13/10 | GPU Programming with CUDA | Slides |
NVIDIA CUDA C Programming Guide NVIDIA CUDA C Best Practices Guide KH Chapters 1-5 (IITK has subscribed to the ebook) HP 4.3 |
18/10, 01/11, 03/11 | Cache Coherence and False Sharing | Slides | MCM Chapters 2, 6, 8 (IITK has subscribed to the ebook) |
03/11, 04/11, 08/11, 10/11, 11/11 | Concurrent Data Structures | Slides | MP Chapters 9, 10, 13 (IITK has subscribed to the ebook) |