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
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
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
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
Otra Posibilidad Ejecutar alpha y beta en paralelo. Ejecutar gama y delta en paralelo. OpenMPDirectivas distribución de trabajo
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
#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
Página anterior | Volver al principio del trabajo | Página siguiente |