OpenMP: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Integro |
m →Gli elementi fondamentali: Integro |
||
Riga 30:
Elementi fondamentali di OpenMP sono i costrutti per la creazione dei thread, per la distribuzione dei carichi di laboro (work sharing), il data-environment management, la sincronizzazione dei thread, le routine runtime a livello utente e le variabili d'ambiente.
Nel linguaggio C/C++ viene utilizzata la direttiva #pragmas.
* '''Creazione dei thread'''
La direttiva pragma ''omp parallel'' è usata per la creazione dei thread addizionali. Il thread originale è chiamato Master thread e ha l' ID 0.
Esempio (in C): Visualizza la stringa "Hello, world" utilizzando thread multipli.
<source lang=c>
#include <stdio.h>
int main(void)
{
#pragma omp parallel
printf("Hello, world.\n");
return 0;
}
</source>
Viene usato il flag -fopenmp per compilare utilizzanto il compilatore GCC:
<source lang=bash>
$gcc -fopenmp hello.c -o hello
</source>
L'Output su un computer con 2 Core e 2 threads è il seguente:
<source lang=bash>
Hello, world.
Hello, world.
</source>
L'output può essere non comprensibile a causa del fenomeno di [[Race condition]] dovuto ai due thread che condividono lo [[Canali standard|standard output]].
<source lang=bash>
Hello, wHello, woorld.
rld.
</source>
==Note==
|