OpenMP: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
LucaBiondi (discussione | contributi)
m Integro
LucaBiondi (discussione | contributi)
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==