Design Optimization of Computing Systems
This course is designed to provide students with an in-depth understanding and practical skills necessary to enhance the performance and efficiency of diverse computing systems. Through a holistic approach, students will delve into various aspects of optimization techniques across multiple domains. The course begins by exploring strategies for optimizing multi-core and CPU-intensive programs, emphasizing the importance of efficient garbage collection mechanisms. Students will then advance to mastering techniques for optimizing multi-threaded applications and IO-intensive programs, with a focus on leveraging Just-In-Time (JIT) compilation for improved performance.
Furthermore, the course delves into database optimization methodologies, covering topics such as hardware support and caching mechanisms to enhance database performance. Students will also explore advanced concepts in network programming optimization, including the utilization of Content Delivery Networks (CDNs) to improve network efficiency. Lastly, the course provides insights into advanced machine learning (ML) optimization techniques, such as ML Operations (MLOps) frameworks like LORA and optimizations for Non-Uniform Memory Access (NUMA), enabling students to optimize ML workflows for efficient computation. By the end of the course, students will possess the expertise to analyze performance bottlenecks, devise optimization strategies, and implement solutions to enhance the efficiency and scalability of complex computing systems.
Note: You can get an idea of what you might learn in this course by reviewing the following problems. Please submit the Google form after completing the problems to help us register you for the course.
Instructors
Mainack Mondal
mainack [AT] cse [DOT] iitkgp [DOT] ac [DOT] in
Sandip Chakraborty
sandipc [AT] cse [DOT] iitkgp [DOT] ac [DOT] in
Teaching Assistants
Shiladitya De
shiladitya [DOT] de [AT] kgpian [DOT] iitkgp [DOT] ac [DOT] in
Yatindra Indoria
yatindraindoria75 [AT] kgpian [DOT] iitkgp [DOT] ac [DOT] in
Notices and Announcements
[October 28, 2024]
Assignment 3 has been uploaded. Check out the assignments section for more details.
[September 25, 2024]
Assignment 2 has been uploaded. Check out the assignments section for more details.
[August 11, 2024]
Assignment 1 has been uploaded. Check out the assignments section for more details.
[July 14, 2024]
Students are requested to apply for this course through the ERP portal. Applications will be reviewed and finalized a few days before classes begin. Please refrain from sending individual emails regarding your application, as we may not be able to respond to each one. In the meantime, do review and submit the problems. These problems will give you an idea regarding the course content.
Course Information
Credit(L-T-P):
Pre-requisites:
- CS31202: Operating Systems
- CS31204: Computer Networks
- CS30202: Database Management Systems
Lectures:
Scheduled lecture timings are (Slot V3):
- Thursday 03:00 pm - 04:55 pm
- Friday 03:00 pm - 03:55 pm
References:
- Systems Performance: Enterprise and the Cloud, 2nd Edition - Brendan Gregg, 2020
- Advanced Python Programming - Dr. Gabriele Lanaro, Quan Nguyen, Sakis Kasampalis, 2019
- Designing Data-Intensive Applications - Martin Kleppman, 2017
- The Art of Multiprocessor Programming - Maurice Herlihy, Nir Shavit, 2011
Coursework:
Communication:
Joining MS Teams
- Note that you NEED TO join the Microsoft teams classroom titled "Design Optimization Of Computing Systems 2024 (CS60203)" for this course. We will also share the recordings (as well as recorded lectures) of the lectures via Microsoft Teams. Drop the instructors an email ASAP if you cannot access the Microsoft teams classroom.
- We would announce doubt clearing sessions to complement the lecture sessions as we go. Please keep an eye on the schedule and Microsoft Teams channels.
- We'll use Microsoft Teams for general discussion and questions about course material.
- You should already have the account username and password to log into Microsoft teams. If you cannot access the Microsoft teams classroom titled "Design Optimization Of Computing Systems 2024 (CS60203)" please let the instructors know as soon as possible.
- If you need to reach out to the instructors (e.g., pertaining to an illness or other events that might be impacting your performance in class), please send a private chat on Microsoft Teams visible only to the instructors. Please use the Microsoft Teams chatroom (and channels) to discuss publicly with your peers in real-time.
- Please try to keep all course-related communication to Microsoft Teams rather than email.
Late Policy:
Of course, in exceptional circumstances related to personal emergencies, serious illness, wellness concerns, family emergencies, and similar, please make the course staff aware of your situation beforehand/as soon as possible and we will decide how to handle your case.
Grading Policy:
- Tests: 60%
- Assignments: 40%
Schedule
Date | Topic | Slides | Readings and Videos |
---|---|---|---|
Jul 25 - Aug 1 | Introduction to Systems Performance and Measurement | Slides | Recommended Reading: The Friendship That Made Google Huge |
Aug 1 - Aug 7 | Garbage Collection | Part 1, Part 2 | Required Reading: Java Garbage Collectors, their working and comparisons |
Aug 8 | Just-In-Time(JIT) Compilation | Slides | Required Reading 1: Numba JIT architecture Required Reading 2: Copy-and-Patch Compilation Paper Recommended Reading: Using Copy-and-Patch to JIT PostgreSQL |
Aug 9 - Aug 16 | SIMD Optimizations | Part 1, Part 2 | Recommended Readings: Improving performance with SIMD intrinsics in three use cases, Vectorization optimization in GCC |
Aug 22 | Multicore Programming | Slides | Recommended Readings: A Survey of Cache Coherence- Schemes for Multiprocessors, Per-CPU Variables |
Aug 23 - Aug 29 | Lock Free Programming | Part 1, Part 2 | Recommended Readings: Is Parallel Programming Hard, And, If So, What Can You Do About It?(A great reading on RCU (check out section 9.5)), lockfree: A collection of lock-free data structures written in standard C++11 |
Aug 30 - Sep 6 | Concurrency and Lightweight Threading | Slides | Recommended Readings: Python Asyncio: The Complete Guide, Illustrated Tales of Go Runtime Scheduler, Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency(video) |
Sep 6 | Kernel Bypass | Slides | Required Readings: Netmap Paper, mTCP Paper |
Sep 12 - Oct 3 | Databases and Optimizing Storage | Slides | Recommended Readings are Embedded in Slides |
Oct 4 | NoSQL: Not only SQL | Slides | Recommended Readings are Embedded in Slides |
Oct 10 - Nov 7 | Network Virtualisation | Slides | Recommended Readings: A Summary of Network Virtualisation, OpenFlow, ONOS Platform |
Nov 8 - Nov 16 | Network Optimizations | Slides | Recommended Readings are Embedded in Slides |
Assignments
- Assignment 1: Benchmarking the Lua GC (Deadline: 11:59 PM, 26th August, 2024)
- Assignment 2: Introduction to PintOS and improving threads in PintOS (Deadline: 11:59 PM, 16th October, 2024)
- Assignment 3: DOCS DB - A High Performance Key-Value DB (Deadline: 11:59 PM, 29th November, 2024)
Tests
- Mid-Semester Examination: 20th September, 2024 (2 PM - 4 PM)
- End-Semester Examination: 21st November, 2024 (2 PM - 4 PM)
Honor Code
You are permitted to talk to the course staff and to your fellow students about any of the problem sets.
Any assistance, though, must be limited to discussion of the problem and sketching general approaches to
a solution. Each student must write out his or her own solutions to the problem sets. Consulting another
student's solution is prohibited, and submitted solutions may not be copied from any source. These and
any other form of collaboration on assignments constitute cheating.
No collaboration is permitted on quizzes or assignments. All work submitted for the project must
properly cite ideas and work that are not those of the students in the group.
Simply stated, feel free to discuss problems with each other, but do not cheat. It is not worth it,
and you will get caught. In that case, we will be forced to award you no marks for that
assignment/quiz/project, take away 50% of your total final marks and you will risk deregistration.
Wellness
If a personal emergency comes up that might impact your work in the class, please let the instructors know via a private chat message (to all the course instructors) so that the course staff can make appropriate arrangements. We are going through unprecedented times and circumstances can sometimes be very overwhelming, and all of us benefit from support during times of struggle. You are not alone.
Copyright Policy
All teaching materials in this class, including course slides, homeworks, assignments, practice exams and quizzes, are copyrighted. Reproduction, redistribution and other rights solely belong to the instructor. In particular, it is not permissible to upload any or part of these materials to public or private websites without the instructor's explicit consent. Violating this copyright policy will be considered an academic integrity violation, with the consequences discussed above. Reading materials are also copyrighted by their respective publishers and cannot be reposted or distributed without prior authorization from the publisher.