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 |