Descargar

Programación con Paralelismo Implícito (página 3)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red OpenMPDirectivas distribución de trabajo La directiva PRAGMA OMP PARALLEL FOR Características de la directiva: Distribuye la carga de un bucle entre las tareas La descomposición se hace en el espacio de iteraciones El contador es implícitamente declarado PRIVATE Restricciones : En C, el bucle debe ser de un tipo determinado En Fortran, el bucle no puede ser del tipo do while El contador debe ser el mismo para todas las tareas Sólo admite bloques estructurados de código Las variables SHARED sólo se actualizan al final

edu.red La directiva PRAGMA OMP PARALLEL SECTION Hasta ahora hemos considerado paralelismo de data nada más OpenMP nos permite asignar hilos distintos a partes distintas del código (paralelismo funcional) Permite implementar el paralelismo tipo MIMD Precede a un bloque de k bloques de código que se puede ejecutar en paralelo por k hilos La sintaxis:#pragma omp parallel sections

OpenMPDirectivas distribución de trabajo

edu.red v = alpha(); w = beta(); x = gamma(v, w); y = delta(); printf ("%6.2fn", epsilon(x,y));

Se puede ejecutar alpha, beta, and delta en paralelo.

OpenMPDirectivas distribución de trabajo

edu.red La directiva PRAGMA OMP SECTION Precede cada bloque de código dentro del bloque grande Se puede omitir para el primer bloque después de la pragma parallel sections La sintaxis:#pragma omp section OpenMPDirectivas distribución de trabajo

edu.red Ejemplo de parallel section

#pragma omp parallel sections { #pragma omp section /* Optional */ v = alpha(); #pragma omp section w = beta(); #pragma omp section y = delta(); } x = gamma(v, w); printf ("%6.2fn", epsilon(x,y));

OpenMPDirectivas distribución de trabajo

edu.red Otra Posibilidad Ejecutar alpha y beta en paralelo. Ejecutar gama y delta en paralelo. OpenMPDirectivas distribución de trabajo

edu.red La directiva PRAGMA OMP SECTIONS Aparece a dentro de un bloque paralelo de código Tiene el mismo significado como la pragma parallel sections Varias pragmas sections dentro de un bloque paralelo podría reducir los gastos de fork/join Restricciones de la directiva: La manera de asignar secciones a tareas no está definida Cada sección debe ser un bloque estructurado de código No se crean nuevas tareas, se usan las existentes Las variables SHARED sólo se actualizan al final

OpenMPDirectivas distribución de trabajo

edu.red #pragma omp parallel { #pragma omp sections { v = alpha(); #pragma omp section w = beta(); } #pragma omp sections { x = gamma(v, w); #pragma omp section y = delta(); } } printf ("%6.2fn", epsilon(x,y)); OpenMPDirectivas distribución de trabajo

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente