Differences

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

Link to this comparison view

app:laboratoare:02 [2025/10/22 08:23]
alexandru.bala [Clauza nowait]
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 116: Line 116:
 ===== Guided scheduling ===== ===== Guided scheduling =====
  
-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 executie.+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 ''​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 168: Line 168:
 #pragma omp parallel #pragma omp parallel
 { {
-    #pragma omp for nowait private(i) schedule(static,​ 2)+    #pragma omp for nowait private(i)
     for (i = 0; i < 10; i++) {     for (i = 0; i < 10; i++) {
         c(i);         c(i);
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.1761110619.txt.gz · Last modified: 2025/10/22 08:23 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