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

Instructor Photo

Mainack Mondal

mainack [AT] cse [DOT] iitkgp [DOT] ac [DOT] in

Instructor Photo

Sandip Chakraborty

sandipc [AT] cse [DOT] iitkgp [DOT] ac [DOT] in

Teaching Assistants

TA Photo

Shiladitya De

shiladitya [DOT] de [AT] kgpian [DOT] iitkgp [DOT] ac [DOT] in

TA Photo

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):
3-0-0
Pre-requisites:
This is an advanced level course, mostly dealing with optimizations associated with real-world deployed systems. Thus, we will assume familiarity with Computer Systems. We are providing an exclusive list of pre-requisites(this list is not complete, but should give you an idea about what basic background knowledge you need for this course)
  • CS31202: Operating Systems
  • CS31204: Computer Networks
  • CS30202: Database Management Systems
Lectures:
Venue: CSE-120
Scheduled lecture timings are (Slot V3):
  • Thursday 03:00 pm - 04:55 pm
  • Friday 03:00 pm - 03:55 pm
In this semester we will conduct the course offline with a mix of live lectures, and pre-recorded course videos (if necessary). Please keep an eye on the schedule page for the latest updates.
References:
There are few specific textbooks, that we will be following. However, most of our course will be based on research/white papers associated with real-life deployed systems. The list of textbooks is as follows:
Coursework:
The coursework for all students consists of 2 tests and a few assignments. We will use CSE Moodle for submission of tests and assignments this course. The code for joining CSE moodle will be given in the class.
Communication:
We will update the course schedule regularly throughout the course. Also, keep an eye on the notice and announcements page.
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.
General discussion
  • 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:
You need to strictly adhere to the deadlines for the submissions (e.g., assignments etc.) announced for this course in MS teams, or by design Moodle will not accept it.

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:
The approximate grading policy for the course is as follows:
  • 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

Tests

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.