Gyakorlattal kapcsolatos anyagok

Gyakorlat időpont
Szerda 12:15-13:45
Gyakorlat helyszín
D 4-202

1. Gyakorlat

Témakörök

  • Áttekintés: fordítók architektúrája, rekruzív leszállás, balrekurzió eliminálása, optimalizáció, ütemezés, instruction selection, regiszter allokáció, cpu architektúrák, out of order execution, SIMD, CPU pipeline

A diasor elérhető innen.

2. Gyakorlat

Témakörök

  • Típusrendszer feladatai
  • Köztes reprezentációk: ábrázolás, absztrakciós szint, felhasznált nevek
  • Absztrakt szintaxisfa, konkrét szintaxisfa, szintaxis DAG, control flow graph, függőségi gráf, hívási gráf, lineáris kód, static single-assignment forma
  • Clang által generált LLVM IR, mem2reg pass SSA-vá alakításhoz

3. Gyakorlat

Témakörök

  • Memória és a generált kód kapcsolata, aliasing, C strict aliasing szabályok következményei (http://blog.regehr.org/archives/1307), heap vs stack
  • Függvényekkel kapcsolatos kérdések, stack, aktivációs rekord, korutinok, rekurzió, visszatérési cím, végrekurzió, inline, hívási konvenciók, paraméter átadási módok, miért érdemes valamit kis típusokat érték szerint?
  • Szimbólumtáblák reprezentációja

4. Gyakorlat

Témakörök

  • Z3 segítségével optimalizációk helyességének bizonyítása
  • Kód alakjával kapcsolatos kérdések, switch, tömbök reprezentációja, virtuális memória
  • Szintaxisfa alakja és constant folding
  • Regiszter használat minimalizálása kifejezés kiértékelésekor
  • SOA vs AOS reprezentáció
  • Fast math kapcsoló
  • Nullterminált vs hosszal rendelkező stringek

5. Gyakorlat

Témakörök

  • Latency vs throughput, optimalizáció feladatai, honnan jönnek az optimalizációs lehetőségek?, deoptimalizáció
  • Optimalizáció hatóköre: lokális, regionális (ciklus, extended basic block, ...), globális, interprocedurális, fordítási egységek közötti
  • Local value numbering, nevek szerepe, kiegészítés kommutativitással, constant foldinggal, algebrai azonosságokkal, általánosítás extended basic blockokra
  • SSA előnyei value numbering algoritmusoknál, indirrekt értékadások (pointerek) hatása value numberingre

6. Gyakorlat

Témakörök

  • Fák kiegyensúlyozása: megfelelő részfák megtalálása (gyökerek), számozás, újraépítés
  • Loop unrolling hatása a többi optimalizációra
  • Liveness analízis, inicializálatlan változók megtalálása, dead store-ok megtalálása
  • Data flow egyenletrendszerek felírása, fix-pont iterációs megoldásuk
  • Liveness analízis és globálisok, pointerek. Data flow analízis és a lehetetlen útvonalak.

7. Gyakorlat

Témakörök

  • Maximal SSA, Semi pruned SSA, megkonstruálásuk, Reaching definition analízis, globális nevek.

8. Gyakorlat

Témakörök

  • Phi csúcsok eliminálása, kritikus él
  • Sparse simple constant propagation, hálók
  • Hívások közti konstans propagáció
  • Elérhetetlen és haszontalan kód törlése, kontrol függőség fogalma

9. Gyakorlat

Témakörök

  • Chains of recurrence
  • Loop strength reduction

A félév közben bemutatott kódok elérhetőek innen.

10. Gyakorlat

Témakörök

  • ZH