Differences

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

Link to this comparison view

app:laboratoare:02 [2022/10/18 14:20]
emil.slusanschi
app:laboratoare:02 [2022/10/19 14:58] (current)
emil.slusanschi [Clauza nowait]
Line 14: Line 14:
 </​code>​ </​code>​
  
-Un exemplu grafic pentru cele trei tipuri de scheduling "​clasic"​ poate fi vazut aici: {{:​app:​laboratoare:​openmp_scheduling.png?​600|OpenMP Scheduling - RvdP@Sun}}+Un exemplu grafic pentru cele trei tipuri de scheduling "​clasic"​ poate fi vazut aici: 
 + 
 +{{:​app:​laboratoare:​openmp_scheduling.png?​600|OpenMP Scheduling - RvdP@Sun}}
  
 In cele ce urmeaza, vom lua pe rand cele trei tipuri de scheduling si le vom analiza individual. In cele ce urmeaza, vom lua pe rand cele trei tipuri de scheduling si le vom analiza individual.
Line 142: Line 144:
 </​code>​ </​code>​
  
-===== nowait =====+===== Clauza ​nowait =====
 Atunci când paralelizăm un for, există o barieră după fiecare for paralelizat,​ unde se așteaptă ca toate thread-urile din for-ul paralelizat să ajungă în același punct în același timp, ca apoi să-și continue execuția. Atunci când paralelizăm un for, există o barieră după fiecare for paralelizat,​ unde se așteaptă ca toate thread-urile din for-ul paralelizat să ajungă în același punct în același timp, ca apoi să-și continue execuția.
  
Line 149: Line 151:
 #pragma omp parallel #pragma omp parallel
 { {
-    #pragma omp for nowait ​private(i)+    #pragma omp for private(i)
     for (i = 0; i < 16; i++) {     for (i = 0; i < 16; i++) {
         c(i);         c(i);
Line 177: Line 179:
 {{:​app:​laboratoare:​parallel_for_nowait.png?​600|Rulare utilizand nowait}} {{:​app:​laboratoare:​parallel_for_nowait.png?​600|Rulare utilizand nowait}}
  
-===== 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, in mod automat sincronizat peste mai multe threaduri. Nu orice operatie poate fi utilizata intr-o operatie de tip ''​reduction''​.
  
Line 209: Line 211:
   * http://​jakascorner.com/​blog/​   * http://​jakascorner.com/​blog/​
   * https://​ppc.cs.aalto.fi/​   * https://​ppc.cs.aalto.fi/​
-  * [Dynamic ​scheduling ​vs. Guided ​scheduling](https://​stackoverflow.com/​questions/​42970700/​openmp-dynamic-vs-guided-scheduling)+  * Dynamic vs. Guided ​Scheduling: ​https://​stackoverflow.com/​questions/​42970700/​openmp-dynamic-vs-guided-scheduling
   * Laboratorul a fost construit de catre Florin Mihalache pe https://​github.com/​florinrm/​app-laborator/​ si portat/​revizuit de catre Emil Slusanschi pe https://​ocw.cs.pub.ro   * Laboratorul a fost construit de catre Florin Mihalache pe https://​github.com/​florinrm/​app-laborator/​ si portat/​revizuit de catre Emil Slusanschi pe https://​ocw.cs.pub.ro
  
  
app/laboratoare/02.1666092000.txt.gz · Last modified: 2022/10/18 14:20 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