Simone Campanoni

Associate professor
Department of Computer Science at Northwestern University

Simone Campanoni

Computer Science
Northwestern University

ARCANA logo

CS 397/497: Advanced Topics in Compilers

Description

Production compilers often do not include the latest compilation techniques proposed by the research community. This is because the latest techniques are often not yet as robust as they need to be to be included in a production compiler. My other compiler classes (COMP_SCI 322 and COMP_SCI 323) teach well-established compilation techniques included in production compilers (e.g., register allocation, instruction selection). This class, instead, focuses on the advanced compilation techniques the research community has proposed that are not yet included in production compilers. This class covers the large number of compilation techniques proposed by the research community across several years. Specifically, we organize these compilation techniques in topics. Every year we will focus only on up to two topics (e.g., automatic parallelizing compilers, autotuning) to allow a deep dive study.

Syllabus
Department page

Material

This class takes materials from many research papers published in compiler venues. Such papers and their codebase are distributed via Canvas. Finally, this class relies on the NOELLE compilation layer.
All the slides used in the 2022-2023 class are below. The rest of the material is available only on Canvas.
Materials are improved every year. They are updated on this website (atomically) only at the end of the class.

Week number First lecture Second lecture
Week 0 Welcome ( PDF ) NOELLEGym ( PDF ) ,
Quick refresh about LLVM from CS 323 ( PDF )
Week 1 Introduction to NOELLE ( PDF , PDF , PDF ) Dependences with NOELLE ( PDF , PDF )
Week 2 Looking at a single loop with NOELLE ( PDF ) ,
Loop environment with NOELLE ( PDF ) ,
Loop invariants with NOELLE ( PDF )
Loop induction variables with NOELLE ( PDF ) ,
Loop SCCs with NOELLE ( PDF ) ,
Parallelization tool built upon NOELLE ( PDF , PDF )
Week 3 Student presentations
Week 4 Profiling code with NOELLE ( PDF , PDF ) ,
Task with NOELLE ( PDF , PDF )
Data-flow analysis with NOELLE ( PDF , PDF ) ,
Call graph with NOELLE ( PDF , PDF )
Week 5 Hacking: parallelization enablers,
Hacking: compilation pipeline to extend (and exploit) the source programming language
Forest of loops with NOELLE ( PDF , PDF )
Week 6 Papers discussion Hacking: DOALL upon NOELLE
Week 7 Hacking: HELIX upon NOELLE,
Hacking: DSWP upon NOELLE
Papers discussion
Week 8 Metadata with NOELLE CFG analyses and transformations with NOELLE
Week 9 Student presentations

Evaluation

Next is the evaluation of this class done by its students.
Ratings are between 1 (lowest) and 6 (highest). NA = Not Available

Year Number of students Teacher Course Amount learned Intellectual challenge Stimulating interest
2022 - 2023 15 5.86 5.57 5.43 5.57 6.00
2021 - 2022 8 6.00 6.00 6.00 6.00 6.00
2020 - 2021 10 5.83 5.50 5.50 5.50 5.83
2019 - 2020 7 5.83 5.83 5.83 5.83 5.83
2018 - 2019 5 6.00 5.50 5.50 5.50 6.00
2017 - 2018 6 6.00 5.75 5.75 5.75 6.00
Average 8.50 5.92 5.69 5.67 5.69 5.69
Total 51


Next are all the comments about the class directly from its students. No filtering is performed among the comments. The next comments are the answers to the question "Did the course help you learn? Why or why not?"

2022 - 2023

The NOELLE lectures were very good and helped me learn things about NOELLE that I had missed before.

2021 - 2022

Yes, it's a fun class and you get to meet with the instructor frequently and this helps you get unstuck.

2020 - 2021

Yes. The papers discussed were very educational, the project was fun, and for me, a really new area of programming. I really liked the meetings as well; I felt that I left all the meetings understanding many new things about the project, and with a better direction as well.
Yes, this course involved a good deal of reading about cutting edge research on compilers. This helped me learn about the field while learning how to better read research papers
Yes. Very fun course. If you liked Simone's other courses, and you like reading research papers, you will enjoy this.

2019 - 2020

Yes, this course helped me to learn a lot on Compiler. Although there are still many concepts and stuff that I do not understand clearly now. However, at least I know what kind of topics that Compiler guys are caring about.
This is a seminar class where you read research papers on compilers, with the benefit of having an expert (Prof. Campanoni) to explain you difficult concepts.

2018 - 2019

We read tier 1 papers. This helped to broaden our knowledge in the compilers field.

2017 - 2018

This course was a great delve into a very specific subset of compiler research: parallelization. The papers were interesting, the discussions extremely thorough, to the point of slowing down the reading pace. As always, Campanoni teaches not just material but how to analyze papers, how to nitpick them while appreciating whatever contributions they made.
Simone is awesome, and I really enjoyed this seminar. It was pretty small since the pre-reqs are basically all the other compilers classes, but fun. We generally read a paper per lecture, and outside of those worked on projects related to active research efforts in Simone's group.
We read and discussed a good amount of research papers. In every discussion we went in dept on the meaning of the concepts described in the paper. Quality as opposed to quantity is the key of this course.
I learnt advanced compilers techniques and transformations.

External links:
LinkedIn profile LinkedIn Follow SimoneCampanoni on Twitter Twitter GitHub profile GitHub

Share this page with: