lunes, 31 de octubre de 2011

Apuntes OpenMP

#pragma omp directive-name [clause, ...] newline

#pragma omp parallel default(shared) private(beta,pi)

Directivas:
parallel.- Una región parallel es un bloque de código que será ejecutado por multiples threads.
pasada la región parallel sólo continua el hilo principal en ejecución. Si algún thread
finaliza dentro de una región parallel todos los threads finalizan y su resultado no está
definido.
Work-Sharing Constructs:
DO / for Directive.- Las iteraciones del bucle serán ejecutadas en paralelo por todos los threads.
Se asume que está dentro de una región parallel. Mirar clausulas.
Sections.- Cada sección es ejecutada una vez por un thread del total (de threads). Diferentes
secciones pueden ser ejecutadas por diferentes threads.
single.- El código sólo es ejecutado por un thread del total.
barrier.- Sincroniza todos los threads en ejecución. Cuando un thread alcanza esta directiva espera hasta que
todos los demás threads lleguen a este punto y a continuación todos los threads se continuan ejecutando
en paralelo.


Opciones de compilación.
-xopenmp.- Equivalent to -xopenmp=parallel
-xopenmp=parallel.- Enables recognition of OpenMP pragmas Requires at least optimization level -xO3
-xopenmp=noopt.- Enables recognition of OpenMP pragmas The program is parallelized accordingly, but no
optimization is done *
-xopenmp=none.- Disables recognition of OpenMP pragmas (default)
-xloopinfo.- Display parallelization messages on screen
-stackvar.- Allocate local data on the stack (Fortran only) Use this when calling functions in parallel
Included with -xopenmp=parallel | noopt
-vpara/-xvpara.- Reports OpenMP scoping errors in case of incorrect parallelization (Fortran and C compiler only)
Also reports OpenMP scoping errors and race conditions statically detected by the compiler
-XlistMP.- Reports warnings about possible errors in OpenMP parallelization (Fortran only)
-xcommonchk.- option to report upon inconsistentusage of threadprivate