T-106.5450 Assignments (spring 2015)
To actually learn something about compilers, you should get your hands on them. So, doing assignments is an important part of the course.
The assignments consists of two parts:
- Individual assignments to be returned by email T-106.5450 at aalto.fi
- One point per assignment correctly done
- Up to six rounds of individual assignments
- Solutions presented at the exercise sessions (on whiteboard)
- Assignments to be presented at the sessions
- By default, group size is two
- Student presentations at the exercise sessions (material on this wiki in advance)
- Two points per an assignment acceptably presented
- Up to three rounds of group assignments
The assignment will be handled in the exercise sessions. The exercise session schedule is the following.
date | place | Indiv.ass. | Present. |
|---|---|---|---|
| round 1 | |||
| 2015-02-06 | T5 | 1 (done) | 1a (done) |
| 2015-02-27 | T5 | 2 (done) | 1b (done) |
| round 2 | |||
| 2015-03-13 | T5 | 3 (done) | 2a (done) |
| 2015-03-27 | T5 | 4 (done) | 3a/2b (done) |
| round 3 | |||
| 2015-04-17 | T5 | 5 (published) | 3a/3b (assigned) |
The assignments will be available at least one week in advance. To get full points from the assignment, you should be able to attend at least every second exercise session (to give your presentations), but attending all of them is probably very good for you (think of the exam!).
The presentation assignments
You should
- study your topic and make a short wikipage (link it from your topic header under this page)
- be prepared to present shortly your work on the lectures (approx 15-20 min including the discussion)
- if you do not know what you should actually do, ask the lecturer (e-mail)
Many of the assigments are about LLVM that has a rich documentation. Useful for us are
- LLVM projects
- LLVM tools
- LLVM analyses and transformations
Presentation assignment round 1a, due to 2015-02-06 (session in T5 at 2pm)
LLVM intermedia language (Risto, Kristian)
- Explain the intermediate languange (IL) syntax and semantics
- Note that the IL has three syntaxes
- Include LLVM IL API also into your presentation
LLVM TableGen (Sami, Jonas)
- Explain its usage
- Include (somewhat) also its operation
- Be aware what "backend" means in LLVM (i.e., what we more commonly call a "code generator")
Presentation assignment round 1b, due to 2015-02-27 (session in T5 at 2pm)
LLVM structure (Arto, Pekka)
- Basically explain the LLVM toolset and interoperation of the tools
- Include also switches of opt here
- opt is very central in LLVM
- note that our course concentrates on optimizations
LLVM debugging (Jaakko, Mikko)
- You can talk about
- How LLVM supports debugging of the compiled code
- Or what support there exists for debugging LLVM itself
- Or both
- It is your choice
LLVM execution and interpretation (Trang)
- How the code handled by LLVM can be executed
- Native execution (i.e., directly by target HW)
- Intepretation (e.g., LLVM lli)
- Your can include your own work with LLVM here
Presentation assignment round 2a, due to 2015-03-13 (session in T5 at 2pm)
SSA in LLVM (Risto, Kristian)
- Explain how SSA is implemented in LLVM
- read doi>10.1145/115372.115320
Legalization and lowering in LLVM (Jonas, Trang)
- You should understand selection DAG in general, and then
- look into codegen docs
- look into backend docs
Presentation assignment round 2b / round 3a, due to 2015-03-27 (session in T5 at 2pm)
- check the basics from LLVM docs
- you can compare with C++11 atomics (e.g., starting form from Sutter's writings), if you will
Presentation assignment round 3a/b, due to 2015-04-17 (session in T5 at 2pm)
Generating GPU code with LLVM (Risto, Kristian)
- Look at the PTX backend of LLVM
- You can also review the PTX front end
- to understand the picture more completely
Polyhedral optimisations with LLVM (Jonas, Trang)
- Look at LLVM Polly
- How Polly integrates with rest of the LLVM
- Looking at vectorisation here is a good approach
Individual assignments
You can find the individual assignments on separate pages