Differences

This shows you the differences between two versions of the page.

Link to this comparison view

asc:teme:tema1 [2026/04/06 13:23]
emil.slusanschi [Resurse necesare realizării temei]
asc:teme:tema1 [2026/04/15 14:39] (current)
vlad.spoiala [Punctaj]
Line 3: Line 3:
 <note important>​ <note important>​
   * **Deadline soft:** ** 26 Aprilie 2026, ora 23:​55**. ​   * **Deadline soft:** ** 26 Aprilie 2026, ora 23:​55**. ​
-  * Primiți un bonus de 10% din punctajul obținut pentru trimiterea temei înainte de ** 21 Aprilie 2026, ora 23:55**. Veți primi o depunctare de 10% din punctajul maxim al temei pentru fiecare zi de întârziere,​ până la maxim 7 zile, adică până pe ** 3 Mai 2026, ora 23:55**.+  * Primiți un bonus de 10% din punctajul obținut pentru trimiterea temei înainte de ** 24 Aprilie 2026, ora 23:55**. Veți primi o depunctare de 10% din punctajul maxim al temei pentru fiecare zi de întârziere,​ până la maxim 7 zile, adică până pe ** 3 Mai 2026, ora 23:55**.
   * **Deadline hard:** **3 Mai 2026, ora 23:55**.   * **Deadline hard:** **3 Mai 2026, ora 23:55**.
   * **Responsabili:​** [[vladspoiala@gmail.com |Vlad Spoiala]], [[emil.slusanschi@cs.pub.ro|Emil Slusanschi]],​ [[serban.ionescu0609@stud.acs.upb.ro | Serban Ionescu]], [[adumitrescu2708@stud.acs.upb.ro | Alexandra Dumitrescu]].   * **Responsabili:​** [[vladspoiala@gmail.com |Vlad Spoiala]], [[emil.slusanschi@cs.pub.ro|Emil Slusanschi]],​ [[serban.ionescu0609@stud.acs.upb.ro | Serban Ionescu]], [[adumitrescu2708@stud.acs.upb.ro | Alexandra Dumitrescu]].
Line 9: Line 9:
  
 <note tip> <note tip>
-  * Dată publicare: ​aprilie 2026+  * Dată publicare: ​aprilie 2026
   * Dată actualizare enunț:   * Dată actualizare enunț:
 </​note>​ </​note>​
Line 93: Line 93:
 <note warning> Comanda **apptainer** trebuie rulata de pe unul din nodurile partitiei haswell, nu de pe fep. </​note>​ <note warning> Comanda **apptainer** trebuie rulata de pe unul din nodurile partitiei haswell, nu de pe fep. </​note>​
  
-Mai multe informatii despre cum se ruleaza containere pe cluster puteti gasi aici: https://​guides.upb.ro/​docs/​grid/​apptainer-usage 
  
 Pentru a vedea cat de incarcate sunt nodurile puteti folosi **scontrol**:​ Pentru a vedea cat de incarcate sunt nodurile puteti folosi **scontrol**:​
Line 166: Line 165:
  
 Punctajul este impărțit astfel: Punctajul este impărțit astfel:
-  ​* **10p** pentru implementarea corecta a variantei **blas**  +Parte verificata / notata automat de checker (max **100p** == 1 punct de nota finala): 
-  * **10p** pentru implementarea corecta a variantei **neopt** +  ​* **20p** pentru implementarea corecta a variantei **blas**  
-  * **15p** pentru implementarea variantei **opt_m** dintre care: +  * **20p** pentru implementarea corecta a variantei **neopt** 
-    * 10p dacă implementarea obține rezultate corecte și timpul de calcul pe partiția **haswell ** este mai mic de 9s pentru testul cu N = 1200 +  * **30p** pentru implementarea variantei **opt_m** dintre care: 
-    * 5p daca timpul de calcul pe partitia **haswell ** pentru testul cu N = 1200 este mai mic de 3sVeti obtine un punctaj partial ​daca timpul de calcul este intre 3s si 7s+    * 20p dacă implementarea obține rezultate corecte și timpul de calcul pe partiția **haswell ** este mai mic de 9s pentru testul cu N = 1200 
-  * **9p** dacă cele 3 implementări nu prezintă probleme de acces la memorie+    * 5p daca timpul de calcul pe partitia **haswell ** pentru testul cu N = 1200 este mai mic de 6s. 
 +    * 5p daca timpul de calcul ​pe partitia **haswell ** pentru testul cu N = 1200 este mai mic de 3s. 
 +  * **15p** dacă cele 3 implementări nu prezintă probleme de acces la memorie
     * Pentru a rezolva acest subpunct va trebui să folosiți **valgrind** cu opțiunile **--tool=memcheck --leak-check=full**     * Pentru a rezolva acest subpunct va trebui să folosiți **valgrind** cu opțiunile **--tool=memcheck --leak-check=full**
     * Veți include 3 fișiere, **neopt.memory**,​ **blas.memory** si **opt_m.memory**,​ cu output-urile rulării valgrind pentru fiecare din cele 3 variante având ca input fișierul **input_valgrind**     * Veți include 3 fișiere, **neopt.memory**,​ **blas.memory** si **opt_m.memory**,​ cu output-urile rulării valgrind pentru fiecare din cele 3 variante având ca input fișierul **input_valgrind**
-  * **16p** pentru analiza celor 3 implementări folosind **cachegrind**  +  * **15p** pentru analiza celor 3 implementări folosind **cachegrind**  
-    * 6p pentru includerea în arhivă a 3 fisiere, **neopt.cache**,​ **blas.cache** si **opt_m.cache** reprezentând output-urile rulării **valgrind** cu optiunile **--tool=cachegrind --branch-sim=yes --cache-sim=yes** pe partiția **haswell** având ca input fișierul **input_valgrind**+    * pentru includerea în arhivă a 3 fisiere, **neopt.cache**,​ **blas.cache** si **opt_m.cache** reprezentând output-urile rulării **valgrind** cu optiunile **--tool=cachegrind --branch-sim=yes --cache-sim=yes** pe partiția **haswell** având ca input fișierul **input_valgrind** 
 +  * **Bonus 20%** pentru implementarea si testarea corecta a celor trei variante de cod **blas**, **neopt**, **opt** pe o alta arhitectura din cluster la alegere intre cozile **xl** sau **ucsx**, sau a unui procesor propriu (ce trebuie descris de voi in detaliu in README), precum si cu oferirea unei analiza comparative a rezultatelor obtinute pe arhitectura haswell vs. arhitectura aleasa de testare (din cluster sau de pe sistemul propriu). In cazul in care ati realizat aceasta implementare de bonus, veti mentiona acest lucru la interviul de laborator si bonusul va fi evaluat in cadrul acelei discutii. Codul, datele si analizele trebuie sa faca insa parte din arhiva temei 1. Daca faceti acest bonus, creati un director **bonus** in arhiva temei, in care replicati structura temei 1, si lasati si binarele obtinute/​folosite,​ pe langa sursele si makefile-urile aferente. 
 +  * Detaliile arhitecturale ce trebuiesc oferite in documentatie: ​  
 +    * Procesor: minim pentru haswell. Eventual alta arhitectura aleasa (pentru bonus): model de procesor, frecventa, dimensiuni + moduri de adresare al cacheurilor (pentru toate nivelurile existente) 
 +    * Memorie principala: dimensiune, frecventa, bandwidth, latenta 
 +    * Compilator: nume, versiune 
 + 
 +Parte verificata / notata la interviul/​evaluarea individuala de laborator/​teme de la finalul semestrului. Punctajul de mai jos este doar pentru tema 1 si poate atinge max **50p** == 0.5p din nota finala: 
 +  * **50p** Pentru o analiză comparativă a performanței pentru cele 3 variante si respectiv a furnizarii prompturilor folosite (in format text, NU imagini, si intrebare si raspuns, ordonate succesiv) in interactiunea cu unelte de tip LLM (e.g. ChatGPT, CoPilot, Grok, Gemini, etc.). Indicati unealta folosita + versiunea acesteia. Trebuie sa se puna accent si pe modificarile de mână ale codurilor dezvoltate, nu doar pe explicarea unor coduri generate automat: 
 +    * 15p pentru realizarea unor grafice relevante bazate pe rularea a cel puțin 5 teste (5 valori diferite ale lui N: adică încă cel puțin două valori diferite de 400, 800 și 1200 pentru N) si pentru comentarea / explicarea acestor grafice in README. 
 +    * 10p pentru explicații oferite în README pentru versiunile **blas**, **neopt**, si **opt_m**. Aceste explicatii trebuiesc scrise de voi si nu copiate din unelte online.  
 +    * 15p pentru oferirea (succesiunii) de prompturi folosite pentru obtinerea versiunilor de cod **blas**, **neopt**, si **opt_m** precum si detalierea in README a motivelor pentru care a fost utilizata succesiunea aleasa spre o solutie eficienta a fiecarei variante de cod 
     * 5p pentru explicații oferite despre valorile obținute (I refs, D refs, Branches etc.)     * 5p pentru explicații oferite despre valorile obținute (I refs, D refs, Branches etc.)
     * 5p pentru explicații oferite despre efectul optmizărilor făcute de mână în varianta **opt_m** asupra performantelor obținute ​     * 5p pentru explicații oferite despre efectul optmizărilor făcute de mână în varianta **opt_m** asupra performantelor obținute ​
-  * **40p** pentru o analiză comparativă a performanței pentru cele 3 variante si respectiv a furnizarii prompturilor folosite (in format text, NU imagini, si intrebare si raspuns, ordonate succesiv) in interactiunea cu unelte de tip LLM (e.g. ChatGPT, CoPilot, Grok, Gemini, etc.). Indicati unealta folosita + versiunea acesteia. Trebuie sa se puna accent si pe modificarile de mână ale codurilor dezvoltate, nu doar pe explicarea unor coduri generate automat: 
-    * 12p pentru realizarea unor grafice relevante bazate pe rularea a cel puțin 5 teste (5 valori diferite ale lui N: adică încă cel puțin două valori diferite de 400, 800 și 1200 pentru N) si pentru comentarea / explicarea acestor grafice in README. 
-    * 12p pentru explicații oferite în README pentru versiunile **blas**, **neopt**, si **opt_m**. Aceste explicatii trebuiesc scrise de voi si nu copiate din unelte online. ​ 
-    * 12p pentru oferirea (succesiunii) de prompturi folosite pentru obtinerea versiunilor de cod **blas**, **neopt**, si **opt_m** precum si detalierea in README a motivelor pentru care a fost utilizata succesiunea aleasa spre o solutie eficienta a fiecarei variante de cod  
-    * 4p pentru oferirea unei explicații în README privind motivul existentei buclei de dimensiune N pentru ultimele trei operatii cu matrice din enuntul problemei 
  
 Depunctări posibile: Depunctări posibile:
   * **neopt**:   * **neopt**:
-    * nu se tine cont ca D este o matrice simetrica (-5p+    * nu se tine cont ca D este o matrice simetrica (-10p
   * **blas**:   * **blas**:
-    * unul sau mai multe calcule sunt realizate de mână, fără a folosi funcții din BLAS (intre -3p si -15p+    * unul sau mai multe calcule sunt realizate de mână, fără a folosi funcții din BLAS (intre -6p si -20p
-    * nu se tine cont ca D este o matrice simetrica (-5p+    * nu se tine cont ca D este o matrice simetrica (-10p
-    * a fost inclus codul BLAS (fisiere .so, .h., .c și altele) în arhiva temei (-15p)+    * a fost inclus codul BLAS (fisiere .so, .h., .c și altele) în arhiva temei (-20p)
   * **opt_m**   * **opt_m**
-    * înmulțirea matricelor se realizează cu o complexitate diferită decât în cazul variantei neopt (ex. Strassen vs înmulțire normală de matrice) (-15p+    * înmulțirea matricelor se realizează cu o complexitate diferită decât în cazul variantei neopt (ex. Strassen vs înmulțire normală de matrice) (-30p
-    * timpul de calcul este mai mare decât timpul maxim permis - -15p +    * timpul de calcul este mai mare decât timpul maxim permis ​(-30p) 
-    * nu se tine cont ca D este o matrice simetrica (-5p)+    * nu se tine cont ca D este o matrice simetrica (-10p)
   * **analiza comparativă si prompturi LLM**    * **analiza comparativă si prompturi LLM** 
     * graficele nu au legendă / unități de măsură sau nu sunt explicate/​descrise corespunzator in readme (intre -2p si -5p)      * graficele nu au legendă / unități de măsură sau nu sunt explicate/​descrise corespunzator in readme (intre -2p si -5p) 
-    * lipsesc parțial sau complet timpii de rulare (intre -1p si -5p+    * lipsesc parțial sau complet timpii de rulare (intre -2p si -10p
-    * lipsesc parțial sau total comentariile din REAME cerute explicit in enunt (intre -1p si -10p)+    * lipsesc parțial sau total comentariile din README ​cerute explicit in enunt (intre -5p si -15p)
     * graficele nu conțin toate datele cerute în enunț (intre -2p si -5p)     * graficele nu conțin toate datele cerute în enunț (intre -2p si -5p)
-    * prompturi identice cu ale altor submisii (-45p)+    * prompturi identice cu ale altor submisii (-50p)
   * **generale**:​   * **generale**:​
     * print-uri de debug în cod (intre -1p si -10p)     * print-uri de debug în cod (intre -1p si -10p)
-    * blocuri de cod comentate sau nefolosite (-1p+    * blocuri de cod comentate sau nefolosite (-2p
-    * warning-uri la compilare (intre -1p si -3p+    * warning-uri la compilare (intre -1p si -5p
-    * cod înghesuit/​ilizibil (intre -1p si -3p+    * cod înghesuit/​ilizibil (intre -1p si -5p
     * implementare excesivă de funcții în headere (-1p)     * implementare excesivă de funcții în headere (-1p)
     * folosirea de constante hardcodate (-1p)     * folosirea de constante hardcodate (-1p)
Line 212: Line 219:
 ===== Precizări încărcare / Moodle ===== ===== Precizări încărcare / Moodle =====
  
-Arhiva temei va fi încărcată pe [[https://​curs.upb.ro/​2023/​mod/​assign/​view.php?​id=172248|Moodle]].+Arhiva temei va fi încărcată pe [[https://​curs.upb.ro/​2025/​mod/​assign/​view.php?​id=158374|Moodle]].
  
 Structura arhivei va fi următoarea:​ Structura arhivei va fi următoarea:​
Line 244: Line 251:
 ===== Precizări și recomandări ===== ===== Precizări și recomandări =====
  
-/* 
-Reply Vlad 2021: added  valgrind pt memory checks ​ 
-Pentru asistentii care propun tema 2 din 2021!!! 
- 
-Adaugati ca si la alte teme (vedeti tema1) o lista cu cateva depunctari comune (e.g. memleaks). 
-E.g. Vor fi depuntari intre -0.0 (warning) si -1.0 in functie de gravitate, pentru urmatoarele probleme: 
-* memleaks 
-* cod comentat 
-* etc 
- 
-Sau, ca sa nu fie on the negative bias, puteti spune la precizari: 
- 
-Verificati codul vostru nu numai pentru corectitudine ci si pt memleaks (dati link catre vreun tool). De asemenea, este foarte important si aspectul codului, si in acest sens este bine sa aveti comentarii sugestive, organizare consistenta,​ etc. 
- 
-*/ 
  
 /* /*
Line 273: Line 265:
   * Formatul arhivei trebuie să fie **zip**.   * Formatul arhivei trebuie să fie **zip**.
  
-<note important>​ Punctajul maxim obtinut de tester este 50pRestul de 50p vor fi atribuite prin corectarea manuala a documentatiilor voastre ​(README, cod, grafice, prompturi etc.) </​note>​+<note important>​ Punctajul maxim obtinut de tester este 100pCele 50p descrise pentru partea de documentatie ​(README, cod, grafice, prompturi etc.) vor fi evaluate si notate in cadrul interviului de laborator, impreuna cu explicatiile temei 2. </​note>​
  
 <note important>​Pentru a evita aglomerarea cozii se recomandă rularea de teste pentru valori ale lui N mai mici sau egale cu 1200. </​note>​ <note important>​Pentru a evita aglomerarea cozii se recomandă rularea de teste pentru valori ale lui N mai mici sau egale cu 1200. </​note>​
Line 311: Line 303:
  
 [[https://​infrastructure.pages.upb.ro/​wiki/​docs/​grid | Ghid pentru folosirea gridului instituțional]] [[https://​infrastructure.pages.upb.ro/​wiki/​docs/​grid | Ghid pentru folosirea gridului instituțional]]
 +
 +[[https://​guides.upb.ro/​docs/​grid/​apptainer-usage | Ghid pentru folosirea apptainer pe cluster]]
  
 <​hidden>​ <​hidden>​
asc/teme/tema1.1775471019.txt.gz · Last modified: 2026/04/06 13:23 by emil.slusanschi
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0