Differences

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

Link to this comparison view

app:laboratoare:02 [2025/10/22 08:47]
alexandru.bala [Guided scheduling]
app:laboratoare:02 [2025/10/22 10:36] (current)
alexandru.bala [Directiva Reduction]
Line 21: Line 21:
  
 ===== Static scheduling ===== ===== Static scheduling =====
-În cadrul static scheduling, iterațiile unui for sunt împărțite în chunks, de dimensiune ''​chunk_size'',​ și distribuite thread-urilor în ordine circulară. Dacă ''​chunk_size''​ nu este precizat, acesta va fi egal cu ''​numărul_de_iterații_for / numărul_de_thread-uri''​+În cadrul static scheduling, iterațiile unui for sunt împărțite în chunks, de dimensiune ''​chunk_size'',​ și distribuite thread-urilor în ordine circulară. Dacă ''​chunk_size''​ nu este precizat, acesta va fi egal cu ''​numărul_de_iterații_for / numărul_de_thread-uri'' ​(pe baza teoremei împărțirii cu rest, primele ''​rest''​ threads-uri vor avea ''​ceil''​ din această valoare, iar cele rămase ''​floor''​).
  
  
Line 118: Line 118:
 Guided scheduling se aseamănă cu dynamic schedule, în sensul că avem o împărțire pe chunks și o distribuire neuniformă a iterațiilor peste threadurile de execuție. Guided scheduling se aseamănă cu dynamic schedule, în sensul că avem o împărțire pe chunks și o distribuire neuniformă a iterațiilor peste threadurile de execuție.
  
-Diferența față de dynamic schedule constă în dimensiunea chunk-urilor. Dimensiunea unui chunk este proporțională cu numărul de iterații neasignate în acel moment împărțit la numărul de threads, la început un chunk putând avea dimensiunea ''​ceil(nr_iterații / nr_threads)'',​ ca pe parcurs să scadă dimensiunea acestuia până la ''​chunk_size''​ (dacă nu avem, default este 1), care reprezintă dimensiunea minimă pe care o poate avea un chunk (se poate ca ultimele chunk-uri să aibă o dimensiune mai mică decât dimensiunea dată unui chunk). ​+Diferența față de dynamic schedule constă în dimensiunea chunk-urilor. Dimensiunea unui chunk este proporțională cu numărul de iterații neasignate în acel moment împărțit la numărul de threads, la început un chunk putând avea dimensiunea ''​ceil(nr_iterații / nr_threads)'',​ ca pe parcurs să scadă dimensiunea acestuia până la ''​chunk_size''​ (dacă nu avem, default este 1), care reprezintă dimensiunea minimă pe care o poate avea un chunk (se poate ca ultimul chunk/ultimele chunk-uri să aibă o dimensiune mai mică decât dimensiunea dată unui chunk). ​
  
 Exemplu: Exemplu:
Line 180: Line 180:
  
 ===== Directiva Reduction ===== ===== Directiva Reduction =====
-''​reduction''​ este o directivă folosită pentru operații de tip reduce / fold pe arrays / colecții sau simple însumări / înmulțiri în cadrul unui loop. Mai precis, elementele dintr-un array sau indecșii unui loop sunt "​acumulați"​ într-o singură variabilă, cu ajutorul unei operații, al cărui semn este precizat, ​in mod automat sincronizat peste mai multe threaduri. Nu orice operatie ​poate fi utilizata intr-o operatie ​de tip ''​reduction''​.+''​reduction''​ este o directivă folosită pentru operații de tip reduce / fold pe arrays / colecții sau simple însumări / înmulțiri în cadrul unui loop. Mai precis, elementele dintr-un array sau indecșii unui loop sunt "​acumulați"​ într-o singură variabilă, cu ajutorul unei operații, al cărui semn este precizat, ​în mod automat sincronizat peste mai multe thread-uri. Nu orice operație ​poate fi utilizată într-o operație ​de tip ''​reduction''​.
  
 Tipar: ''​reduction(operator_operatie:​variabila_in_care_se_acumuleaza)''​ Tipar: ''​reduction(operator_operatie:​variabila_in_care_se_acumuleaza)''​
app/laboratoare/02.1761112034.txt.gz · Last modified: 2025/10/22 08:47 by alexandru.bala
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