CS598 Advanced Performance Engineering (Spring 2025)
About
This course will teach you how to understand and build the high performance computing systems that make up everything from supercomputers to embedded devices. This seminar course will exploring performance pitfalls in a high-level programming language, descending through the compiler, assembly, eventually hardware level to explore how to build fast code. Topics may include: algorithmic performance engineering, parallelism, memory hierarchies, and beyond.
Course Website
Course materials, schedules, policies, and other information will be available online at https://prontolab.github.io/598APE.
Piazza
The course Piazza can be used to discuss the homeworks, and help you with general debugging. You should sign up at https://piazza.com/illinois/spring2025/cs598ape.
Grading
- Mini-Papers: 30%
- Paper Reviews: 20%
- Course Project: 50%
Mini-Papers (and Reviews)
Performance engineering is both an art and a science. While some concepts have clear answers (e.g. method A is the bottleneck and takes up 95% of the program runtime), determining how to improve it is often a creative endeavor with many potential options to explore.
Homework for this course will be structed like mini-papers that require implementation, experimentation, and analysis. Students should turn in a coherent paper and code appendix for each assignment, with graphs, analysis, and steps to reproduce your results.
Each assignment will come with a round of peer review, in which students will be randomly assigned three other students’ assignments (anonymously) and asked to provide a short evaluation.
The quality of both the papers themselves and your peer reviews with factor into your grade for the term.
Course Project
All students are required to propose and complete a course project on performance engineering during this course. Students may work in teams and must submit a project proposal, presentation, and final report. Potential projects may include:
- Exploration of a novel research idea.
- Performance analysis and optimization of a large-scale application.
- Open Source replication of existing research results.
Additional guidance on the course project will be provided during the semseter.
External Resources / Academic Integrity
The purpose of this course is to help you learn the necessary skills and intuition for working with high performance code. Simply copying code or text may not be condusive to learning how to create or understand said content. That said, automated and external resources may be helpful for more mundate tasks or help one understand how a system works. Over the course of this term we will learn about and use several different resources including compilers, profilers, debuggers, and AI-based tools. At the top of each assignment please list the types of resources you used for that assignment.
Cheating will result in a reduced or failing grade.
Unless otherwise specified in an assignment/exam, the following rules apply:
- Copying of code or text from any source (including, but not limited to, on the Web, in a Textbook, code/text written in previous semesters, or code/text obtained from people, code/text obtained from AI tools) is not permitted, unless provided by course staff or other group-members in a team assignment. Either recieving or distributing code or text for an assignment to non-team members is considered cheating.
- Using outputs of AI-tools (e.g., generated code/text, summarization, etc) is not permitted.
- Using AI-tools, web-pages, documentation, or manuals to further your understanding of a subject is permitted.
- Discussing assignments or material from the course without revealing answers is permitted (and encouraged).
- The use of non-AI code-generators (i.e. compilers, runtimes, DSLs), including those on your local machine or the web is permitted.