Differences

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

Link to this comparison view

asc:teme:tema2 [2026/05/11 09:58]
emil.slusanschi [Algoritmul de consens]
asc:teme:tema2 [2026/05/21 10:38] (current)
tudor.calafeteanu [Tema 2 - Implementarea în CUDA a arborelui Merkle și a algoritmului de consens Proof of Work din cadrul Bitcoin]
Line 2: Line 2:
  
 <note important>​ <note important>​
-  * **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:​** **25 Mai 2026, ora 23:55 <del>24 Mai 2026, ora 23:55</​del>​**. Primiți un bonus de 10% din punctajul obținut pentru trimiterea temei înainte de **23 Mai 2026, ora 23:55 <del>21 Mai 2026, ora 23:55</​del>​**.
   * **Responsabil:​** [[tudor.calafeteanu@upb.ro |Tudor Calafeteanu]]   * **Responsabil:​** [[tudor.calafeteanu@upb.ro |Tudor Calafeteanu]]
 </​note>​ </​note>​
Line 163: 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 176: 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 224: Line 224:
   *  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:   *  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:
     * 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 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 zecimale (exemplu: 0.0044 se aproximeaza la 0.004, 0.0045 la 0.005, si 0.0046 la 0.005).
     * 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/​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 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** -> **50 pct** 
-        * Timp mediu: ​≤   0.1s -> 30 pct +        * Timp **mediu**<  **0.03s** -> **35 pct** 
-        * Timp slab:  ​≤   0.5s -> 15 pct +        * Timp **slab**:  ​<  **0.04s** -> **20 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** -> **50 pct** 
-        * Timp mediu: ​≤   0.1s -> 30 pct +        * Timp **mediu**<  **0.02s** -> **35 pct** 
-        * Timp slab:  ​≤     ​1s ​-> 15 pct +        * Timp **slab**:  ​<  **0.03s** ​-> **20 pct** 
-        * Timp foarte slab (>1s) SAU Nonce incorect: 0 pct+        * Timp **foarte slab** (>=**0.03s**) SAU Nonce incorect: ​**0 pct**
  
 2. Parte verificată/​notată la interviul/​evaluarea individuală de laborator/​teme,​ de la finalul semestrului:​ maxim **50 pct.**, distribuite astfel: 2. Parte verificată/​notată la interviul/​evaluarea individuală de laborator/​teme,​ de la finalul semestrului:​ maxim **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. +  * 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.  
-  * 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. +  * 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.  
-  * 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. Puneți accent și pe modificările de mână ale codurilor dezvoltate, nu doar pe explicarea unor coduri generate automat. +  * 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. 
-  * Eventuale disfuncționalități ale codului vor aduce depunctări,​ în urma analziei codului de către asistent. +  * 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).
- +
-===== Observații ===== +
- +
-<note warning>​ +
-Temele vor fi testate împotriva plagiatului. Orice tentativă de copiere va fi depunctată conform [[asc:​regulament|regulamentului]]. +
-Rezultatele notării automate este orientativă și poate fi afectată de corectarea manuală. +
-</​note>​+
  
 ===== Bonus ===== ===== Bonus =====
Line 256: Line 249:
   * Temele care obțin punctaj maxim pentru 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 280: Line 273:
  
 [1][[https://​bitcoin.org/​bitcoin.pdf|Bitcoin Whitepaper]] [1][[https://​bitcoin.org/​bitcoin.pdf|Bitcoin Whitepaper]]
 +
  
asc/teme/tema2.1778482686.txt.gz · Last modified: 2026/05/11 09:58 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