Differences

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

Link to this comparison view

asc:teme:tema2 [2025/05/13 16:32]
costin.carabas [Tema 2 - Implementarea în CUDA a arborelui Merkle și a algoritmului de consens Proof of Work din cadrul Bitcoin]
asc:teme:tema2 [2026/05/11 16:12] (current)
tudor.calafeteanu [Evaluarea performanței și notarea]
Line 2: Line 2:
  
 <note important>​ <note important>​
-  * **Deadline ​soft:** **18 Mai 2025, ora 23:55** <​del>​**11 Mai 2025, ora 23:55**. Primiți un bonus de 10% din punctajul obținut pentru trimiterea temei înainte de **Mai 2025, 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 **18 Mai 2025, ora 23:​55**</​del>​+  * **Deadline:​** **24 Mai 2026, ora 23:55**. Primiți un bonus de 10% din punctajul obținut pentru trimiterea temei înainte de **21 Mai 2026, ora 23:55**. 
-  * **Deadline hard:** **18 Mai 2025, ora 23:55**. +  * **Responsabil:** [[tudor.calafeteanu@upb.ro |Tudor Calafeteanu]]
-  * **Responsabili:** [[tudor.calafeteanu@upb.ro |Tudor Calafeteanu]], [[costin.carabas@gmail.com|Costin Carabaș]]+
 </​note>​ </​note>​
  
 <note tip> <note tip>
-  * Dată publicare: ​27 Aprilie 2025+  * Dată publicare: ​11 Mai 2026
 </​note>​ </​note>​
  
Line 46: Line 45:
  
 Minerul care a rezolvat primul problema, va propaga răspunsul în rețea, iar acest va fi validat de către ceilalți participanți la rețea. Astfel, problema are 2 proprietăți:​ Minerul care a rezolvat primul problema, va propaga răspunsul în rețea, iar acest va fi validat de către ceilalți participanți la rețea. Astfel, problema are 2 proprietăți:​
-  * Este greu de calculat ​răspunsul+  * Răspunsul este greu de calculat; 
-  * Este ușor de verificat ​răspunsul.+  * Răspunsul este ușor de verificat.
  
 Minerul care a rezolvat primul problema va fi recompensat. În cazul vostru, veți primi punctaj 😁 Minerul care a rezolvat primul problema va fi recompensat. În cazul vostru, veți primi punctaj 😁
Line 164: Line 163:
  
 <​code>​ <​code>​
-BLOCK_ID,NONCE,​BLOCK_HASH,​TIME_FOR_MERKLE_ROOT_COMPUTATION,​TIME_FOR_NONCE_COMPUTATION,​TIME_SUM+BLOCK_ID,​BLOCK_HASH,​MERKLE_ROOT,​NONCE,​TIME_FOR_MERKLE_ROOT_COMPUTATION,​TIME_FOR_NONCE_COMPUTATION,​TIME_SUM
 </​code>​ </​code>​
  
-unde TIME_SUM = TIME_FOR_MERKLE_ROOT_COMPUTATION + TIME_FOR_NONCE_COMPUTATION+unde TIME_SUM = TIME_FOR_MERKLE_ROOT_COMPUTATION + TIME_FOR_NONCE_COMPUTATION
  
 După procesarea tuturor tranzacțiilor,​ se scriu pe ultimul rând timpii totali pentru fiecare din cele 3 coloane de timpi, adică pentru toate blocurile găsite. Timpii sunt aproximați la cinci zecimale. După procesarea tuturor tranzacțiilor,​ se scriu pe ultimul rând timpii totali pentru fiecare din cele 3 coloane de timpi, adică pentru toate blocurile găsite. Timpii sunt aproximați la cinci zecimale.
Line 177: Line 176:
 <spoiler Click pentru a vedea un exemplu de fișier de ieșire> <spoiler Click pentru a vedea un exemplu de fișier de ieșire>
 <​code>​ <​code>​
-1,33865,​0000517db16db1b0a4b3c2a1eee14ebc3c6beaae6420dc90a0643d23a03c167a,​0.10294,0.14677,0.24970 +1,​0000517db16db1b0a4b3c2a1eee14ebc3c6beaae6420dc90a0643d23a03c167a,​edff735b62b37d1afe12e3dcaf3df4da978c857f1ad8f3a8b98c4464fbf0c11c,​33865,0.07091,0.10240,0.17332 
-2,4050,​00007ddf6566d4687489b21cd2764bd286e6958dd7d365fbe30de7ca4b9bbb50,​0.09830,0.01761,0.11592 +2,​00007ddf6566d4687489b21cd2764bd286e6958dd7d365fbe30de7ca4b9bbb50,​ed865ee13c3cdbb2382e3dffab25c95591fbdebaed58c5efed27778114964e4d,​4050,0.07046,0.01225,0.08270 
-3,166127,​00002663dafd560b4a42eca2fba9ee2c4692318b271a40e087af715c238d879d,​0.09814,0.65140,0.74954+3,​00002663dafd560b4a42eca2fba9ee2c4692318b271a40e087af715c238d879d,​606f0d682afbbe8a242e48d77a1d93ef9156dc2d6508ff652da15896d77216b7,​166127,0.07062,0.50269,0.57331
 ..... .....
-10,158592,​0000f5e98829b6fc7d24b890e621b5ca64a6c7c4e4d097a126eae066b54b8de0,​0.07127,0.49897,0.57024 +10,​0000f5e98829b6fc7d24b890e621b5ca64a6c7c4e4d097a126eae066b54b8de0,​38248f1726546451e5f3990f676b857a64d232c002bd06d1ea50ca8609ebfcd4,​158592,0.07069,0.47980,0.55049 
-0.79865,2.10661,2.90526+0.70681,1.86021,2.56703
 </​code>​ </​code>​
 </​spoiler>​ </​spoiler>​
Line 196: Line 195:
   * Aveți la dispoziție 4 fișiere de intrare pentru testare. Sunteți încurajați să vă creați propriile teste pentru a verifica corectitudinea și performanța implementării voastre.   * Aveți la dispoziție 4 fișiere de intrare pentru testare. Sunteți încurajați să vă creați propriile teste pentru a verifica corectitudinea și performanța implementării voastre.
  
-  * Compilarea și rularea temei se vor face **EXCLUSIV** pe coada //xl// (testarea automată va fi, de asemenea, făcută pe //xl//). Nu este nevoie să modificați nimic în //​Makefile//,​ regulile sunt deja făcute. Tot ce trebuie să faceți este să apelați //make//, //make run// și //make clean//, ca la laborator:+  * Compilarea și rularea temei se vor face **EXCLUSIV** pe coada //ucsx// (testarea automată va fi, de asemenea, făcută pe //ucsx//). Nu este nevoie să modificați nimic în //​Makefile//,​ regulile sunt deja făcute. Tot ce trebuie să faceți este să apelați //make//, //make run// și //make clean//, ca la laborator:
  
 <​code>​ <​code>​
Line 207: Line 206:
 <note important>​Tema va fi verificată automat, folosind infrastructura de testare, pe baza unei suite de teste private. </​note>​ <note important>​Tema va fi verificată automat, folosind infrastructura de testare, pe baza unei suite de teste private. </​note>​
  
-  * Arhiva temei va fi încărcată pentru testare și validare pe [[https://​curs.upb.ro/​2024/​mod/​assign/​view.php?​id=115685|Moodle]]. Aceasta va avea denumirea <​NUME_STUDENT>​_<​PRENUME_STUDENT>​_<​GRUPA>​_ASC_TEMA2.zip și va cuprinde obligatoriu fișierele:+  * Arhiva temei va fi încărcată pentru testare și validare pe [[https://​curs.upb.ro/​2025/​mod/​assign/​view.php?​id=117021|Moodle]]. Aceasta va avea denumirea <​NUME_STUDENT>​_<​PRENUME_STUDENT>​_<​GRUPA>​_ASC_TEMA2.zip și va cuprinde obligatoriu fișierele:
     * //​utils.cu//​     * //​utils.cu//​
     * //​README.md//​     * //​README.md//​
Line 219: Line 218:
 </​note>​ </​note>​
  
-  * Punctajul ​maxim este de 100 pct, distribuite ​astfel:+Punctajul este împărțit ​astfel:
  
-  * 10 pct EXPLICAȚII:​ +1. Parte verificată/notată automat ​de checker: **100 pct**.
-    * Implementarea descrisă în README, alături de rezultate și o discuție asupra lor. +
-    ​Programul compilează,​ codul nu are disfuncționalități majore.+
  
-  * 90 pct IMPLEMENTARE:​ +  *  Punctajul la testarea automată ([[https://​curs.upb.ro/​2025/​mod/​assign/​view.php?​id=117021|Moodle]]) se va acorda în funcție de performanța (durata de rulare) a celor două funcții modificate, pentru o suită de teste private, generate de noi, în felul urmator:
-    * Punctaj dat de vmchecker. +
- +
-  Punctajul la testarea automată ([[https://​curs.upb.ro/​2024/​mod/​assign/​view.php?​id=115685|Moodle]]) se va acorda în funcție de performanța (durata de rulare) a celor două funcții modificate, pentru o suită de teste private, generate de noi, în felul urmator:+
     * Fiecare test (asociat unui fișier de intrare) va fi rulat de 5 ori.     * Fiecare test (asociat unui fișier de intrare) va fi rulat de 5 ori.
     * Se vor selecta timpii minimi obținuți pentru fiecare funcție, independent unul de altul (de exemplu, timpul minim pentru generarea Merkle root-ului poate proveni din a 3-a rulare, iar timpul minim pentru găsirea nonce-ului valid din a 4-a) și vor fi aproximați la 2 zecimale (exemplu: 0.044 se aproximeaza la 0.04, 0.045 la 0.05, si 0.046 la 0.05).     * Se vor selecta timpii minimi obținuți pentru fiecare funcție, independent unul de altul (de exemplu, timpul minim pentru generarea Merkle root-ului poate proveni din a 3-a rulare, iar timpul minim pentru găsirea nonce-ului valid din a 4-a) și vor fi aproximați la 2 zecimale (exemplu: 0.044 se aproximeaza la 0.04, 0.045 la 0.05, si 0.046 la 0.05).
     * Timpii rezultați vor fi comparați cu threshold-urile de timp aferente fiecărui test, pentru stabilirea punctajului.     * Timpii rezultați vor fi comparați cu threshold-urile de timp aferente fiecărui test, pentru stabilirea punctajului.
  
-  * Pentru a testa local eficiența implementării,​ înainte de încărcarea pe [[https://​curs.upb.ro/​2024/​mod/​assign/​view.php?​id=115685|Moodle]] pentru testarea automată, vă puteți ajuta de următoarele treshold-uri de timp în cazul parametrilor predefiniți din testul 4 (//​test4.in//​):​+  * Pentru a testa local eficiența implementării,​ înainte de încărcarea pe [[https://​curs.upb.ro/​2025/​mod/​assign/​view.php?​id=117021|Moodle]] pentru testarea automată, vă puteți ajuta de următoarele treshold-uri de timp în cazul parametrilor predefiniți din testul 4 (//​test4.in//​):​
     * Pentru Merkle root (TOTAL_TIME_FOR_MERKLE_ROOT_COMPUTATION):​     * Pentru Merkle root (TOTAL_TIME_FOR_MERKLE_ROOT_COMPUTATION):​
-        * Timp bun:   ≤  0.04s -> 45 pct +        * Timp **bun**:    **0.02s** -> **45 pct** 
-        * Timp mediu: ​≤   0.1s -> 30 pct +        * Timp **mediu**<  **0.03s** -> **30 pct** 
-        * Timp slab:  ​≤   0.5s -> 15 pct +        * Timp **slab**:  ​<  **0.04s** -> **15 pct** 
-        * Timp foarte slab (>0.5s) SAU Merkle root incorect: 0 pct+        * Timp **foarte slab** (>= **0.04s**) SAU Merkle root incorect: ​**0 pct**
     * Pentru căutarea Nonce-ului (TOTAL_TIME_FOR_NONCE_COMPUTATION):​     * Pentru căutarea Nonce-ului (TOTAL_TIME_FOR_NONCE_COMPUTATION):​
-        * Timp bun:   ≤  0.01s -> 45 pct +        * Timp **bun**:    **0.01s** -> **45 pct** 
-        * Timp mediu: ​≤   0.1s -> 30 pct +        * Timp **mediu**<  **0.02s** -> **30 pct** 
-        * Timp slab:  ​≤     ​1s ​-> 15 pct +        * Timp **slab**:  ​<  **0.03s** ​-> **15 pct** 
-        * Timp foarte slab (>1s) SAU Nonce incorect: 0 pct+        * Timp **foarte slab** (>=**0.03s**) SAU Nonce incorect: ​**0 pct**
  
-===== Observații ===== +2Parte verificată/notată la interviul/​evaluarea individuală de laborator/​teme,​ de la finalul semestruluimaxim **50 pct.**, distribuite astfel: 
- +  * maxim **20 pct.** acordate pentru descrierea implementării căutării nonce-ului în README, alături de rezultate, ​și o discuție asupra lor la laborator.  
-<note warning>​ +  * maxim **20 pct.** acordate pentru descrierea implementării Merkle root-ului în README, alături ​de rezultate, și o discuție asupra lor la laborator.  
-Temele vor fi testate împotriva plagiatuluiOrice tentativă de copiere va fi depunctată conform [[asc:regulament|regulamentului]]+  * maxim **10 pct.** acordate pentru furnizarea prompt-urilor folosite (în format text -- NU imagini! -- sub formă de întrebare și răspuns, ordonate succesiv) în interacțiunea cu unelte de tip LLM (e.g. Gemini, Claude, etc.). Indicați unealta folosită + versiunea acesteia. Explicați de ce prompturile folosite si soluțile oferite sunt utile (sau mai puțin utile). Puneți accent și pe modificările de mână ale codurilor dezvoltate, nu doar pe explicarea unor coduri generate automat
-Rezultatele notării automate este orientativă și poate fi afectată de corectarea manuală. +  * Eventuale disfuncționalități ale codului vor aduce depunctări,​ în urma analziei codului de către asistent. Trebuie să puteți răspunde coerent la întrebarea "de ce" pentru orice bucată de cod din soluția oferită (indiferent de funcția la care se adresează întrebarea).
-</​note>​+
  
 ===== Bonus ===== ===== Bonus =====
  
-  * Temele care obțin punctaj maxim pentru ​EXPLICAȚII și IMPLEMENTARE ​vor fi eligibile pentru un bonus de 10% din punctajul total.+  * Temele care obțin punctaj maxim pentru ​implementare, ​vor fi eligibile pentru un bonus de 10% din punctajul total.
   * Bonusul se acordă pentru o implementare deosebit de eficientă.   * Bonusul se acordă pentru o implementare deosebit de eficientă.
-  * Acordarea bonusului rămâne la discreția evaluatorului,​ pe baza calității și inovației soluției.+  * Acordarea bonusului rămâne la discreția evaluatorului,​ pe baza calității și inovației soluției. Pentru aceste bonusuri puteți discuta cu asistenții de la laborator în timpul interviurilor tehnice din ultimele săptămâni ale semestrului.
  
 ===== Resurse necesare realizării temei ===== ===== Resurse necesare realizării temei =====
Line 269: Line 262:
 ===== Suport, întrebări și clarificări ===== ===== Suport, întrebări și clarificări =====
  
-Pentru întrebări sau nelămuriri legate de temă folosiți [[https://​curs.upb.ro/​2024/​mod/​forum/​view.php?​id=115670|forumul temei]].+Pentru întrebări sau nelămuriri legate de temă folosiți [[https://​curs.upb.ro/​2025/​mod/​forum/​view.php?​id=117005|forumul temei]].
  
 <note important>​ <note important>​
Line 280: Line 273:
  
 [1][[https://​bitcoin.org/​bitcoin.pdf|Bitcoin Whitepaper]] [1][[https://​bitcoin.org/​bitcoin.pdf|Bitcoin Whitepaper]]
 +
  
asc/teme/tema2.1747143134.txt.gz · Last modified: 2025/05/13 16:32 by costin.carabas
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