Optimizacija programskog koda
Opće informacije
Nositelj predmeta: doc. dr. sc. Vedran Miletić
Naziv predmeta: Optimizacija programskog koda
Studijski program: Preddiplomski sveučilišni studij Informatika
Status predmeta: obvezatan/izborni
Godina: 3.
Bodovna vrijednost i način izvođenja nastave:
- ECTS koeficijent opterećenosti studenata: 5
- Broj sati (P+V+S): 30+30+0
Opis predmeta
Ciljevi predmeta
Cilj ovog predmeta je uvesti temeljna načela i metode optimizacije programskog koda na razini apstraktne sintakse, grafa toka programa i izvršnog (strojnog) koda.
Uvjeti za upis predmeta
Položen predmet Algoritmi i strukture podataka.
Očekivani ishodi učenja za predmet
Očekuje se da nakon izvršavanja svih programom predviđenih obveza studenti budu sposobni:
I1. Analizirati svojstva koja omogućuju transformaciju programskog koda i prikazati programski kod grafom toka.
I2. Prikazati razlike između lokalne i globalne optimizacije te identificirati gdje se svaka od njih primjenjuje.
I3. Provesti klasičnu analizu toka podataka, alokaciju registara bojenjem registara i eliminaciju zajedničkih podizraza.
I4. Opisati način rada optimizacije višeg nivoa i primijeniti postojeće optimizacije.
I5. Opisati razlike optimizacija višeg nivoa i optimizacija ovisnih o ciljnoj arhitekturi.
I6. Provesti odabir instrukcije.
I7. Analizirati problem redoslijeda faza optimizacije.
Sadržaj predmeta
- Pregled optimizirajućeg prevoditelja programskog jezika. Optimizacija po dijelovima. Analiza svojstava koja omogućuju transformaciju. Graf toka i reprezentacija programskih koncepata. Problem redoslijeda faza optimizacije.
- Vrste optimizacije. Lokalna optimizacija: optimizacija kroz okance, zakazivanje instrukcija. Globalna optimizacija: zajednički podizrazi, kretanje koda. Interproceduralna optimizacija. Graf poziva.
- Klasična analiza toka podataka. Algoritmi na grafovima, skupovi živih i dostupnih varijabli. Alokacija registara bojenjem registara. Eliminacija zajedničkih podizraza. Prolijevanje u memoriju; baratanje privremenim izrazima uvedenim kod eliminacije zajedničkih podizraza. Anomalije toka podataka. Oblik statičke jednostruke dodjele vrijednosti varijablama.
- Pregled optimizacija višeg nivoa. Analiza memorijskih lokacija na koje varijable pokazuju i analiza pseudonima.
- Optimizacija ovisna o ciljnoj arhitekturi. Odabir instrukcije. Zakazivanje instrukcija i povezani problem redoslijeda faza optimizacije.
Vrsta izvođenja nastave
- predavanja
- seminari i radionice
- vježbe
- obrazovanje na daljinu
- terenska nastava
- samostalni zadaci
- multimedija i mreža
- laboratorij
- mentorski rad
- ostalo _______
Komentari
Nastava se izvodi kombinirajući rad u učionici i računalnom laboratoriju uz primjenu sustava za udaljeno učenje. Studenti će kod upisa kolegija biti upućeni na korištenje sustava za udaljeno učenje. U izvedbenom planu objavit će se detaljan raspored nastave s predavanjima i vježbama.
Obveze studenata
Obaveze studenata u predmetu su:
- Redovito pratiti aktivnosti predmeta u okviru sustava za udaljeno učenje i pohađati nastavu kada se odvija u obliku predavanja, auditornih i/ili laboratorijskih vježbi.
- Pristupiti kontinuiranim provjerama znanja (teorijskim i praktičnim kolokvijima) i uspješno ih položiti.
- Izraditi individualni ili timski praktični rad na zadanu temu.
- Pristupiti završnom ispitu i na njemu postići barem 50% bodova.
Detaljan način razrade bodovanja na predmetu te pragovi prolaza za pojedine aktivnosti koje se boduju biti će navedeni u izvedbenom planu predmeta
Praćenje1 rada studenata
- Pohađanje nastave: 2
- Aktivnost u nastavi:
- Seminarski rad:
- Eksperimentalni rad:
- Pismeni ispit: 1
- Usmeni ispit:
- Esej:
- Istraživanje:
- Projekt:
- Kontinuirana provjera znanja: 1
- Referat:
- Praktični rad: 1
- Portfolio:
Postupak i primjeri vrednovanja pojedinog ishoda učenja tijekom nastave i na završnom ispitu
- Praktična provjera znanja na računalu (praktični kolokvij) u kojoj student analizira i transformira kod te koristi i prilagođava postojeće optimizacije (I1, I2, I3, I4, I6).
- Grupni ili individualni praktični rad u kojem studenti prema zadanim uputama implementiraju rješenje s traženim optimizacijama i pišu dokumentaciju vlastite implementacije (I1, I2, I3, I4, I6).
- Pisana ili online provjera znanja u kojoj student pokazuje razumijevanje teorijskih koncepata optimizacije programskog koda, na primjer pomoću pitanja višestrukog izbora, pitanja nadopunjavanja i esejskih pitanja (I1, I2, I4, I5, I7).
Obvezna literatura (u trenutku prijave prijedloga studijskog programa)
- Cooper, K. D. & Torczon, L. Engineering a compiler. (Elsevier/Morgan Kaufmann, 2011).
- Holub, A. I. Compiler design in C. (Prentice Hall, 1990). (e-knjiga je dostupna za besplatno preuzimanje s autorove stranice holub.com/compiler/ i može se ispisati po potrebi)
- Skripte, prezentacije i ostali materijali za učenje dostupni u e-kolegiju.
Dopunska literatura (u trenutku prijave prijedloga studijskog programa)
- Fraser, C. W. & Hanson, D. R. A retargetable C compiler: design and implementation. (Benjamin-Cummings, 1995).
- Muchnick, S. S. Advanced compiler design and implementation. (Morgan Kaufmann, 1997).
- Nielson, F., Nielson, H. R. & Hankin, C. Principles of program analysis. (Springer, 1999).
- Appel, A. W. Modern compiler implementation in C. (Cambridge University Press, 2004).
- Aho, A. V., Lam, M. S., Sethi, R. & Ullman, J. D. Compilers: principles, techniques, & tools. (Pearson/Addison-Wesley, 2006).
- Morgensen, T. Ae. Basics of Compiler Design. (Lulu, 2010).
- Wilhelm, R. & Seidl, H. Compiler design: virtual machines. (Springer, 2011).
- Hack, S., Wilhelm, R. & Seidl, H. Compiler design: code generation and machine-level optimization. (Springer, 2019).
- The GNU Compiler Collection. GCC online documenatation. (GNU, 2019). (dostupna online: gcc.gnu.org/onlinedocs/)
- The LLVM Compiler Infrastructure. LLVM documentation. (LLVM, 2019). (dostupna online: llvm.org/docs/)
Broj primjeraka obavezne literature u odnosu na broj studenata koji trenutno pohađaju nastavu na predmetu
Naslov | Broj primjeraka | Broj studenata |
---|---|---|
Engineering a compiler | 1 | 30 |
Compiler design in C | Dostupno online | 30 |
Načini praćenja kvalitete koji osiguravaju stjecanje izlaznih znanja, vještina i kompetencija
Predviđa se periodičko provođenje evaluacije s ciljem osiguranja i kontinuiranog unapređenja kvalitete nastave i studijskog programa (u okviru aktivnosti Odbora za upravljanje i unapređenje kvalitete Odjela za informatiku). U zadnjem tjednu nastave provodit će se anonimna evaluacija kvalitete održane nastave od strane studenata. Provest će se i analiza uspješnosti studenata na predmetu (postotak studenata koji su položili predmet i prosjek njihovih ocjena).
-
Važno: Uz svaki od načina praćenja rada studenata unijeti odgovarajući udio u ECTS bodovima pojedinih aktivnosti tako da ukupni broj ECTS bodova odgovara bodovnoj vrijednosti predmeta. Prazna polja upotrijebiti za dodatne aktivnosti. ↩