Skip to end of metadata
Go to start of metadata

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
    • 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.

round 1   
2015-02-06T51 (done)1a (done)
2015-02-27T52 (done)1b (done)
round 2   
2015-03-13T53 (done)2a (done)
2015-03-27T54 (done)3a/2b (done)
round 3   
2015-04-17T55 (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)

Legalization and lowering in LLVM (Jonas, Trang)

Presentation assignment round 2b / round 3a, due to 2015-03-27 (session in T5 at 2pm)

LLVM atomics (Sami, Arto)

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

  • No labels