1. Indice de pagina
  2. 1. Introducción
  3. 2. #pragma omp parallel
  4. 2.1. Clause
  5. 3. #pragma omp for
  6. 3.1. Clause
  7. 4. #pragma omp sections
  8. 4.1. Clause
  9. 5. #pragma omp single
  10. 5.1. Clause
  11. 6. #pragma omp parallel for/sections
  12. 7. #pragma omp task
  13. 7.1. Clause
  14. 8. #pragma omp master
  15. 9. #pragma omp critical
  16. 10. #pragma omp barrier
  17. 11. #pragma omp taskwait
  18. 12. #pragma omp atomic
  19. 13. #pragma omp flush
  20. 14. #pragma omp ordered
  21. 15. #pragma omp threadprivate

Introducción

Una directiva OpenMP se aplica a siguiente bloque estructurado o a una construcción OpenMP.
Un bloque estructurado es una declaración simple o una sentencia compuesta con una sola entrada en la parte superior y una sola salida en la parte inferior.

#pragma omp parallel

La directiva parallel forma un equipo de hebras y inicia la ejecución paralela.

#pragma omp parallel [clause[ [, ]clause] ...] new-line
        structured-block

Clause

#pragma omp for

En la creación del bucle se especifica que las iteraciones se distribuirán y ejecutaran por un equipo de hebras.

#pragma omp for [clause[[,] clause] ... ] new-line  
	for-loops

Clause

#pragma omp sections

La construcción sections tiene un conjunto de bloques que tienen que ser distribuidos y ejecutados por un equipo de hebras.

#pragma omp sections [clause[[,] clause] ...] new-line  
	{  
	[#pragma omp section new-line]  
		 structured-block  
	[#pragma omp section new-line  
		 structured-block ]  
	... 
	}

Clause

#pragma omp single

La construcción single especifica que el bloque asociado ha de ser ejecutado por una sola hebra del equipo (no necesariamente la hebra master), en el marco de su función implícita.

#pragma omp single [clause[[,] clause] ...] new-line  
	structured-block

Clause

#pragma omp parallel for/sections

La combinación de la construcción parallel con la especificación de la construcción (for/sections), comparten trabajo teniendo una sola declaración.
La unión de la clausulas permite la creación de hebras a la vez de especificar la estructura paralela.

#pragma omp parallel for [clause[[,] clause] ...] new-line  
	for-loop
#pragma omp parallel sections [clause[ [, ]clause] ...] 
	new-line  
	{  
	[#pragma omp section new-line]  
		 structured-block  
	[#pragma omp section new-line  
	structured-block ]  
	... 
	}

#pragma omp task

La construcción task define explicitamente una tarea. El entorno de datos de la tarea se crea de acuerdo a las cláusulas de intercambio de datos y no se aplica por defecto.

#pragma omp task [clause[ [, ]clause] ...] new-line  
	structured-block

Clause

#pragma omp master

La construcción master de un bloque estructurado especifica que es ejecutada por la hebra principal del equipo (master).
No implica sincronizacion ni a la entrada ni a la salida.

#pragma omp master new-line  
	structured-block

#pragma omp critical

La construcción critital restringe la ejecución asociada al bloque por una sola hebra al mismo tiempo.

#pragma omp critical [(name)] new-line  
	structured-block

#pragma omp barrier

La contrucción barrier especifica de forma explicita un punto de sincronización para todas las hebras.

#pragma omp taskwait

La construcción de taskwait especifica que esperar a la finalización de tareas secundarias generadas desde el inicio de la tarea actual.

#pragma omp atomic

La construcción atomic asegura que un lugar de almacenamiento específico se actualiza automáticamente, expone a la posibilidad de múltiples y simultáneas escrituras.

#pragma omp atomic new-line 
	expression-stmt
 
expression-stmt: one of the following forms:
	x binop = expr 
	x++ 
	++x
	x--
	--x

#pragma omp flush

La contruccion flush ejecuta la operación flush de OpenMP, la cual crea una hebra temporal con una vista consistente de la memoria y fuerza un orden para las operaciones de memoria sobre las variables.

The flush construct executes the OpenMP flush operation, which makes a thread’s temporary view of memory consistent with memory, and enforces an order on the memory operations of the variables.

#pragma omp flush [(list)] new-line

#pragma omp ordered

La contruccion ordered especifica que un bloque dentro de una region de bucle se ejecutara en el orden especificado por las iteraciones del bucle.
El orden de ejecución paralela seria equivalente a una ejecución secuencial.

#pragma omp ordered new-line
	structured-block

#pragma omp threadprivate

La contrucción threadprivate especifica las variables se replican, teniendo cada hebra una copia

#pragma omp threadprivate(list) new-line
Creado por: Daniel Guerrero Martínez y Sergio Rodríguez Lumley 2010

Valid HTML 4.01 Transitional