<div dir="ltr"><div>Buna, Cristina,</div><div class="gmail_extra"><br><div class="gmail_quote">Pe 19 ianuarie 2018, 15:11, Cristiana Stan via cpl <span dir="ltr"><<a href="mailto:cpl@cursuri.cs.pub.ro" target="_blank">cpl@cursuri.cs.pub.ro</a>></span> a scris:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Buna,</div><div><br></div><div>Am si eu cateva intrebari legate de tema 2.</div><div>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.</div></div></blockquote><div>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.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>2. Exista vreun prag al scorului obtinut pentru a primi punctajul maxim?</div></div></blockquote><div><br></div><div>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.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>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"?</div></div></blockquote><div><br></div><div>Acea parte din enunt se refera la faptul ca nu aveti voie sa:</div><div>- Apelati pasi din LLVM de transformare pentru reducerea codului din pass-ul vostru</div><div>- 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.</div><div><br></div><div>Aveti voie insa sa apelati pasii de analiza din link-ul din enunt, care va pot da hinturi catre ce instructiuni puteti sterge.</div><div><br></div><div>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.</div><div><br></div><div>Cred ca "rule of thumb" ar fi:</div><div>- Daca modifica cod, nu aveti voie sa folositi</div><div>- Daca vi se pare ca nu aveti voie sa-l folositi, cel mai probabil nu aveti voie :) </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>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?</div></div></blockquote><div> </div><div>Este in regula. Singura conditie in acest sens este sa aveti minim 2 optimizari (pass-uri). Orice alt detaliu este la latitudinea voastra.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>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)?</div></div></blockquote><div> </div><div>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. </div><div>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 :) ).</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Multumesc,</div><div>Cristiana</div></div></blockquote><div><br></div><div>Asteptam si alte intrebari din partea voastra daca mai sunt.</div><div><br></div><div>Multumesc,<br></div><div>Andrei</div></div><br></div></div>