[cpl] [Tema 2] Cateva intrebari
Andrei Tuicu
andrei.tuicu at gmail.com
Fri Jan 19 22:25:53 EET 2018
Buna, Cristina,
Pe 19 ianuarie 2018, 15:11, Cristiana Stan via cpl <cpl at cursuri.cs.pub.ro>
a scris:
> Buna,
>
> Am si eu cateva intrebari legate de tema 2.
> 1. Ce se intelege prin optimizari netriviale? De exemplu, eu m-am gandit
> sa implementez jump to jump, constant propagation si dead code elimination
> dupa indicatiile din laborator si as vrea sa stiu daca vreuna dintre
> acestea este considerata optimizare triviala si nu va fi luata in calcul la
> punctaj. Vreau sa mentionez, de asemenea, ca aceste optimizari reduc un
> numar considerabil de linii de cod.
>
Optimizarile mentionate de tine nu sunt triviale. :) Nu stiu sa dau un
exemplu foarte bun pe moment de optimizare triviala. Sa zicem ca daca te
uiti surse si gasesti ca poti scoate o instructiune specifica si hardcodezi
un remove pentru ea, aceasta ar fi un exemplu de optimizare triviala.
2. Exista vreun prag al scorului obtinut pentru a primi punctajul maxim?
>
Nu exista un prag. Optimizarile trebuie sa reduca dimensiunea a cel putin
un fisier. Evident, optimizari care nu afecteaza deloc scorul pentru niciun
fisier nu vor fi luate in considerare.
> 3. La ce se refera: "Din infrastructura existentă LLVM puteți folosi pașii
> de analiză, dar nu și pe cei de transformare; nici direct (nu aveți voie să
> îi apelați), nici indirect (nu aveți voie să preluați cod)." Eu am
> implementat constant propagation din laborator, urmarind TODO-urile de
> acolo si consider ca ideea este foarte asemanatoare cu cea din sursa,
> diferind doar modul in care mi-am ales sa implementez unele parti din cod.
> Este acest lucru considerat "preluare de cod"?
>
Acea parte din enunt se refera la faptul ca nu aveti voie sa:
- Apelati pasi din LLVM de transformare pentru reducerea codului din
pass-ul vostru
- Apelati metode din LLVM sau orice alta forma de API care transforma
codul. Practic daca exista o metoda in LLVM care face optimizare cu
eliminare de instructiuni (evident aici metode ca remove/erase nu se
aplica) nu le puteti folosi in tema. Orice inseamna eliminare de
instructiune/block trebuie implementata de voi.
Aveti voie insa sa apelati pasii de analiza din link-ul din enunt, care va
pot da hinturi catre ce instructiuni puteti sterge.
Specific, pentru optimizarea de propagare de constante din laborator, nu
aveti voie sa folositi ConstantFoldInstruction, deoarece din cate inteleg
eu (si va rog corectati-ma daca gresesc, pentru ca am primit o intrebare
specifica pentru aceasta) nu aveti voie sa o folositi, deoarece chiar va
aplica o transformare a codului de tip folding pe constante.
Cred ca "rule of thumb" ar fi:
- Daca modifica cod, nu aveti voie sa folositi
- Daca vi se pare ca nu aveti voie sa-l folositi, cel mai probabil nu aveti
voie :)
4. Este obligatoriu sa avem optimizari care ruleaza pe entitati diferite
> (function/module/block) sau este in regula si daca am doar optimizari care
> rueaza pe function?
>
Este in regula. Singura conditie in acest sens este sa aveti minim 2
optimizari (pass-uri). Orice alt detaliu este la latitudinea voastra.
5. Daca avem doar o optimizare care sa respecte toate regulile din enunt,
> vom primi punctaj partial (in caz afirmativ, cum se va calcula acesta)?
>
Cred ca aici difera de la caz la caz, dar cel mai probabil daca aveti 1
optimizare din 2 cerute care respecta regulile veti primi jumatate din
nota.
Ca la orice alta materie din facultate daca regula incalcata este ca
optimizarea este copiata (coleg, github, alte surse), veti primi 0 puncte
pe tema. (Nu stiu daca mai era nevoie sa mentionez asta, dar am zis sa fie
aici for the record :) ).
Multumesc,
> Cristiana
>
Asteptam si alte intrebari din partea voastra daca mai sunt.
Multumesc,
Andrei
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/cpl/attachments/20180119/b9bf615f/attachment.html>
More information about the cpl
mailing list