Differences

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

Link to this comparison view

app:laboratoare:03 [2022/10/26 16:26]
emil.slusanschi [Resurse]
app:laboratoare:03 [2024/10/22 11:06] (current)
alexandru.bala [Tasks (opțional)]
Line 106: Line 106:
  
 ==== Barieră ==== ==== Barieră ====
-Un alt element de sincronizare reprezintă bariera, care asigură faptul că niciun thread gestionat de barieră nu trece mai departe de aceasta decât atunci cand toate thread-urile gestionate de barieră au ajuns la punctul unde se află bariera.+Un alt element de sincronizare ​îl reprezintă bariera, care asigură faptul că niciun thread gestionat de barieră nu trece mai departe de aceasta decât atunci cand toate thread-urile gestionate de barieră au ajuns la punctul unde se află bariera.
  
 În OpenMP, pentru barieră avem directiva ''#​pragma omp barrier'',​ echivalent cu ''​pthread_barrier_t''​ din pthreads. În OpenMP, pentru barieră avem directiva ''#​pragma omp barrier'',​ echivalent cu ''​pthread_barrier_t''​ din pthreads.
Line 132: Line 132:
 Tipar: ''​reduction(operator_operatie:​variabila_in_care_se_acumuleaza)''​ Tipar: ''​reduction(operator_operatie:​variabila_in_care_se_acumuleaza)''​
  
-Exemplu de reduction: ''​reduction(+:​sum)'',​ unde se însumează ​elementele ​unui array în variabila sum+Exemplu de reduction: ''​reduction(+:​sum)'',​ unde se însumează ​indecșii ​unui loop în variabila sum
  
 Exemplu de folosire de reduction: Exemplu de folosire de reduction:
Line 167: Line 167:
  
 ==== Ordered ==== ==== Ordered ====
-Directiva ''​ORDERED''​ este folosit în for-uri cu scopul de a distribui în ordine iterațiile către thread-uri.+Directiva ''​ORDERED''​ este folosită în for-uri cu scopul de a distribui în ordine iterațiile către thread-uri.
  
 Exemplu: Exemplu:
Line 202: Line 202:
   * ''​COPYIN''​ - asignarea unei variabile ''​THREADPRIVATE''​ este vizibilă tuturor thread-urilor   * ''​COPYIN''​ - asignarea unei variabile ''​THREADPRIVATE''​ este vizibilă tuturor thread-urilor
  
-===== Tasks (opțional) ​=====+===== Tasks =====
 Task-urile în OpenMP reprezintă un concept prin care putem să avem thread pools pentru paralelizarea de soluții ale căror dimensiune nu o știm (echivalent cu ''​ExecutorService''​ din Java). Un task este executat la un moment dat de către un thread din thread pool. Task-urile în OpenMP reprezintă un concept prin care putem să avem thread pools pentru paralelizarea de soluții ale căror dimensiune nu o știm (echivalent cu ''​ExecutorService''​ din Java). Un task este executat la un moment dat de către un thread din thread pool.
  
Line 283: Line 283:
 <​note>​De probă, încercați să puneți ORDERED la for-urile paralelizate,​ pentru a vedea cum este afectată performanța.</​note>​ <​note>​De probă, încercați să puneți ORDERED la for-urile paralelizate,​ pentru a vedea cum este afectată performanța.</​note>​
  
-  ​* **(opțional)** Paralelizați folosind task-uri codul din [[https://​github.com/​cs-pub-ro/​app-labs/​blob/​master/​lab3/​skel/​tree.c | tree.c]] (folosiți task-uri în funcțiile ''​preorder''​ și ''​height''​ - la ultima trebuie să folosiți ''​taskwait''​).+  * Paralelizați folosind task-uri codul din [[https://​github.com/​cs-pub-ro/​app-labs/​blob/​master/​lab3/​skel/​tree.c | tree.c]] (folosiți task-uri în funcțiile ''​preorder''​ și ''​height''​ - la ultima trebuie să folosiți ''​taskwait''​).
  
 ===== Resurse ===== ===== Resurse =====
  
-[[https://​stackoverflow.com/​questions/​18669296/​c-openmp-parallel-for-loop-alternatives-to-stdvector | User-defined OpenMP Reduction]]+  - [[https://​stackoverflow.com/​questions/​18669296/​c-openmp-parallel-for-loop-alternatives-to-stdvector | User-defined OpenMP Reduction]] 
 +  - [[https://​stackoverflow.com/​questions/​18022133/​difference-between-openmp-threadprivate-and-private |Difference between OpenMP threadprivate and private]] 
 +  - [[https://​learn.microsoft.com/​en-us/​cpp/​parallel/​openmp/​reference/​openmp-clauses?​view=msvc-170 | OpenMP Clauses]]
app/laboratoare/03.1666790784.txt.gz · Last modified: 2022/10/26 16:26 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