ÍNDICE
PROGRAMACIÓN CON PARALELISMO IMPLÍCITO (OMP)
Introducción
Conceptos básicos
Paralelismo de datos
Directivas OMP
Regiones paralelas
OpenMPIntroducción
El estándar es definido y revisado por el comité OpenMP Architecture Review Board compuesto actualmente por:
U.S. DoD: Aeronautical Systems Center
cOMPunity (Comunidad de usuarios de OpenMP)
Edinburgh Parallel Computing Centre (EPCC)
Laboratorio NASA Ames
ST Microelectronics: The Portland Group
Fujitsu
Hewlett Packard
International Business Machines (IBM)
Intel Corporation
KAI Software Lab (KSL)
NEC Corporation
Silicon Graphics Inc. (SGI)
Sun Microsystems
Universidad RWTH Aachen
OpenMPIntroducción
Antes de la introducción de OpenMP cada fabricante tenía su propio “estándar”
Los programas tenían portabilidad nula
El estándar ANSI X3H5 fracasó por falta de apoyo
Se perdió interés en las máquinas SMP
El estándar OpenMP se introdujo para resolver esto:
En 1997 se publicó la versión 1.0
En 1999 se publicó la versión 1.1
En 2000 se publicó la versión 2.0
En 2005 se publicó la versión 2.5
OpenMPIntroducción
OpenMP se fundamenta en directivas y cláusulas:
Las directivas especifican qué hacer
Las cláusulas indican cómo hacerlo
Se añaden como comentarios al código
Tipos de directivas en OpenMP:
Directivas de distribución de trabajo
Directivas de sincronización de tareas
Tipos de cláusulas en OpenMP:
Cláusulas de datos
Cláusulas de comportamiento
Cláusulas de sincronía
OpenMPIntroducción
Ventajas de OpenMP:
Sencillo: no requiere el envío explícito de mensajes como en MPI
La descomposición de los datos es automática
Admite la paralelización incremental del código
Mismo código fuente para las versiones serial y paralela
Permite implementar granularidad gruesa y fina
Elevada portabilidad
OpenMPIntroducción
Inconvenientes de OpenMP:
Requiere un compilador que entienda OpenMP
El estándar sólo contempla C y Fortran
Sólo es eficiente en máquinas de memoria compartida
En general la eficiencia paralela es baja
La escalabilidad está limitada por el acceso a memoria
Aumentar la eficiencia requiere reestructurar el código
OpenMPIntroducción
Compiladores que soportan OpenMP
SGI MIPSpro
IBM XL
Sun Studio
Portland Group Compilers and Tools
Absoft Pro FortranMP
Lahey/Fujitsu Fortran 95
Fujitsu-Siemens Fortran 95 (Solaris)
Intel Software Development Products
PathScale
GNU GCC (a partir de la versión 4.2)
HP
OpenMPIntroducción
El soporte para OpenMP ha de ser activado
Versión serial de un programa:
ifort ejemplo.f90
Versión paralela de un programa:
ifort -openmp ejemplo.f90
En casi todos los compiladores la opción es -openmp
Un programa secuencial es un caso especial de un programa de memoria compartida
Paralelización incremental es el proceso de convertir un programa secuencial a un programa paralelo poco a poco
Las iteraciones de un bucle for se pueden ejecutar en paralelo si ninguna iteración depende de otra anterior.
Ejemplos:
for (i=first;i<=n;i++) suma += suma + v[i]
OpenMP Conceptos básicos
OpenMPConceptos básicos
SECTIONS – particiona el trabajo en
secciones separadas.
Cada sección es ejecutada por un hilo.
Se puede utilizar para implementar un
tipo de “paralelismo funcional”
SINGLE – serializa una
sección de código
Página siguiente |