Está en la página 1de 46

Programación

Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

Introducción y
Programación Paralela en Fortran95 motivación

Regiones paralelas
usando OpenMP Conceptos y
terminologı́a
(Parte I) Cláusulas de datos

Directivas de
distribución de
trabajo
Miguel Hermanns
Directivas
combinadas
Universidad Politécnica de Madrid, España
Recomendaciones

Resumen
26 de abril de 2007
Programación
Estructura de la clase Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

1 Introducción y motivación de OpenMP Introducción y


motivación

Regiones paralelas
2 Caracterı́sticas fundamentales de OpenMP
Conceptos y
terminologı́a
3 Regiones paralelas y regiones seriales Cláusulas de datos

Directivas de
distribución de
4 Conceptos generales y terminologı́a habitual trabajo

Directivas
combinadas
5 Variables compartidas y variables privadas Recomendaciones

Resumen
6 Distribución de la carga computacional

7 Recomendaciones personales
Programación
¿Qué es OpenMP? Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
El OpenMP Application Program Interface (API) es:
Introducción y
motivación
Conjunto de directivas de compilación, librerı́as y
Regiones paralelas
variables de entorno que permiten expresar el paralelismo
Conceptos y
de tareas en programas escritos en C, C++ y Fortran terminologı́a

Cláusulas de datos

Directivas de
distribución de
trabajo

Directivas
combinadas

Recomendaciones

Resumen
Toda la información está disponible en la página web:

www.openmp.org
Programación
¿Quién define OpenMP? Paralela en
Fortran95
usando OpenMP
El estándar es definido y revisado por el comité Miguel Hermanns

OpenMP Architecture Review Board Introducción y


motivación

Regiones paralelas
compuesto actualmente por: (1/2) Conceptos y
terminologı́a

U.S. DoD: Aeronautical Systems Center Cláusulas de datos

Directivas de
distribución de
cOMPunity (Comunidad de usuarios de OpenMP) trabajo

Directivas
Edinburgh Parallel Computing Centre (EPCC) combinadas

Recomendaciones
Laboratorio NASA Ames Resumen

ST Microelectronics: The Portland Group

Fujitsu

Hewlett Packard
Programación
¿Quién define OpenMP? Paralela en
Fortran95
usando OpenMP
El estándar es definido y revisado por el comité Miguel Hermanns

OpenMP Architecture Review Board Introducción y


motivación

Regiones paralelas
compuesto actualmente por: (2/2) Conceptos y
terminologı́a

International Business Machines (IBM) Cláusulas de datos

Directivas de
distribución de
Intel Corporation trabajo

Directivas
KAI Software Lab (KSL) combinadas

Recomendaciones
NEC Corporation Resumen

Silicon Graphics Inc. (SGI)

Sun Microsystems

Universidad RWTH Aachen


Programación
Historia de OpenMP Paralela en
Fortran95
usando OpenMP
Antes de la introducción de OpenMP: Miguel Hermanns

Cada fabricante tenı́a su propio “estándar” Introducción y


motivación

Los programas tenı́an portabilidad nula Regiones paralelas

Conceptos y
terminologı́a
El estándar ANSI X3H5 fracasó por falta de apoyo
Cláusulas de datos

Se perdió interés en las máquinas SMP Directivas de


distribución de
trabajo

Directivas
El estándar OpenMP se introdujo para resolver esto: combinadas

Recomendaciones
En 1997 se publicó la versión 1.0
Resumen

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


Programación
Caracterı́sticas fundamentales de OpenMP Paralela en
Fortran95
usando OpenMP
OpenMP se fundamenta en directivas y cláusulas: Miguel Hermanns

Las directivas especifican qué hacer


Introducción y
motivación
Las cláusulas indican cómo hacerlo
Regiones paralelas

Se añaden como comentarios al código Conceptos y


terminologı́a

Cláusulas de datos
Tipos de directivas en OpenMP: Directivas de
distribución de
Directivas de distribución de trabajo trabajo

Directivas
Directivas de sincronización de tareas combinadas

Recomendaciones

Resumen
Tipos de cláusulas en OpenMP:
Cláusulas de datos
Cláusulas de comportamiento
Cláusulas de sincronı́a
Programación
Caracterı́sticas fundamentales de OpenMP Paralela en
Fortran95
usando OpenMP

Se definen dos tipos de “comentarios OpenMP”: Miguel Hermanns

Introducción y
!$OMP: precede a todas las directivas de OpenMP: motivación

Regiones paralelas
! $OMP PARALLEL DEFAULT ( NONE ) SHARED (A , B ) &
Conceptos y
! $OMP PRIVATE (C , D ) REDUCTION (+: A ) terminologı́a

Cláusulas de datos

Directivas de
!$: precede a lı́neas que sólo se compilan con OpenMP: distribución de
trabajo

Interval = ( b - a ) Directivas
combinadas
! $ Interval = ( b - a ) * O M P _ g e t _ t h r e a d _ n u m () / &
!$ ( O M P _ g e t _ n u m _ t h r e a d s () - 1) Recomendaciones

Resumen

Ambos “centinelas” no pueden ir precedidos de código:

Interval = (b - a) !$ * OMP get thread num() ...


Programación
Caracterı́sticas fundamentales de OpenMP Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

Ventajas de OpenMP: Introducción y


motivación

Regiones paralelas
Sencillo: no requiere el envı́o de mensajes como en MPI
Conceptos y
terminologı́a
La descomposición de los datos es automática Cláusulas de datos

Directivas de
Admite la paralelización incremental del código distribución de
trabajo

Directivas
Mismo código fuente para las versiones serial y paralela combinadas

Recomendaciones

Permite implementar granularidad gruesa y fina Resumen

Elevada portabilidad
Programación
Caracterı́sticas fundamentales de OpenMP Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

Inconvenientes de OpenMP: Introducción y


motivación

Regiones paralelas
Requiere un compilador que entienda OpenMP
Conceptos y
terminologı́a
El estándar sólo contempla C y Fortran Cláusulas de datos

Directivas de
Sólo es eficiente en máquinas de memoria compartida distribución de
trabajo

Directivas
En general la eficiencia paralela es baja combinadas

Recomendaciones

La escalabilidad está limitada por el acceso a memoria Resumen

Aumentar la eficiencia requiere reestructurar el código


Programación
Compiladores que soportan OpenMP Paralela en
Fortran95
usando OpenMP

SGI MIPSpro Miguel Hermanns

IBM XL Introducción y
motivación

Sun Studio Regiones paralelas

Conceptos y
terminologı́a
Portland Group Compilers and Tools
Cláusulas de datos
Absoft Pro FortranMP Directivas de
distribución de
trabajo
Lahey/Fujitsu Fortran 95
Directivas
combinadas
Fujitsu-Siemens Fortran 95 (Solaris)
Recomendaciones

Intel Software Development Products Resumen

PathScale
GNU GCC (a partir de la versión 4.2)
HP
Programación
Compiladores que soportan OpenMP Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

Introducción y
El soporte para OpenMP ha de ser activado: motivación

Regiones paralelas

Conceptos y
Versión serial de un programa: terminologı́a

Cláusulas de datos
hermanns@bender:~$ ifort ejemplo.f90 Directivas de
distribución de
trabajo

Versión paralela de un programa: Directivas


combinadas

Recomendaciones
hermanns@bender:~$ ifort -openmp ejemplo.f90
Resumen

En casi todos los compiladores la opción es -openmp


Programación
Crear regiones paralelas con !$OMP PARALLEL Paralela en
Fortran95
usando OpenMP

Las directivas !$OMP PARALLEL/!$OMP END PARALLEL: Miguel Hermanns

Introducción y
Definen una región paralela motivación

Regiones paralelas
!$OMP PARALLEL crea un conjunto de tareas Conceptos y
terminologı́a
Las cláusulas especifican condiciones a cumplir Cláusulas de datos

Directivas de
Todas las tareas ejecutan las instrucciones distribución de
trabajo

!$OMP END PARALLEL finaliza la región paralela Directivas


combinadas

Recomendaciones
Sintáxis de la directiva: Resumen

! $OMP PARALLEL clause1 clause2 ...

... instructions ...

! $OMP END PARALLEL


Programación
Crear regiones paralelas con !$OMP PARALLEL Paralela en
Fortran95
usando OpenMP

Ejemplo de región paralela: Miguel Hermanns

Introducción y
! $OMP PARALLEL motivación
write (* ,*) " Hello " Regiones paralelas
! $OMP END PARALLEL
Conceptos y
terminologı́a

Cláusulas de datos
6Representación gráfica 1.delOpenMP
ejemplo:
Fortran Application Program Interface
Directivas de
distribución de
trabajo

thread 0 Directivas
serial region combinadas
E
x Recomendaciones
e
c
u Resumen
t
i
   o
n
parallel region thread 0 thread 1 thread Np
...
write(*,*) "Hello" write(*,*) "Hello" write(*,*) "Hello"


Figure 1.1: Graphical representation of the example explaining the working principle of the
Programación
Maneras de especificar el número de tareas Paralela en
Fortran95
usando OpenMP

La variable de entorno OMP NUM THREADS: Miguel Hermanns

hermanns@bender:~$ export OMP NUM THREADS=4 Introducción y


motivación

Regiones paralelas
La subrutina OMP set num threads: Conceptos y
terminologı́a
use omp_lib
Cláusulas de datos

call O M P _ s e t _ n u m _ t h r e a d s (4) Directivas de


distribución de
trabajo
! $OMP PARALLEL
... Directivas
combinadas
! $OMP END PARALLEL
Recomendaciones

Resumen
La cláusula NUM THREADS:
! $OMP PARALLEL NUM_THREADS (4)
...
! $OMP END PARALLEL

Cada una de ellas sobreescribe la especificación anterior


Programación
La cláusula IF Paralela en
Fortran95
usando OpenMP

Caracterı́sticas de la cláusula: Miguel Hermanns

Introducción y
Crear una región paralela es algo costoso motivación

Regiones paralelas

La opción condition permite sopesarlo: Conceptos y


terminologı́a

Cláusulas de datos
Si condition = TRUE entonces ejecuta en paralelo
Directivas de
distribución de
Si condition = FALSE entonces ejecuta en serie trabajo

Directivas
combinadas
Sólo se puede imponer una condición
Recomendaciones

Resumen

! $OMP PARALLEL IF ( condition )

... instructions ...

! $OMP END PARALLEL


Programación
Regiones paralelas anidadas Paralela en
Fortran95
usando OpenMP
Son regiones paralelas creadas en regiones paralelas:
Miguel Hermanns

Crea un nuevo conjunto de tareas Introducción y


motivación

Esta funcionalidad puede habilitarse y deshabilitarse Regiones paralelas

Conceptos y
terminologı́a
Lo controla la variable de entorno OMP NESTED, que
Cláusulas de datos
puede ser OMP NESTED=TRUE u OMP NESTED=FALSE
Directivas de
distribución de
El compilador no está obligado por el estándar a trabajo

soportarlo Directivas
combinadas

Recomendaciones
! $OMP PARALLEL
Resumen
write (* ,*) " Hello "

! $OMP PARALLEL
write (* ,*) " Hi "
! $OMP END PARALLEL

! $OMP END PARALLEL


Programación
Regiones paralelas anidadas Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

Introducción y
motivación
serial region thread 0
Regiones paralelas

Conceptos y
terminologı́a

E Cláusulas de datos
x
  e Directivas de
thread 0 thread 1 c distribución de
parallel region u trabajo
t
Hello Hello i Directivas
o combinadas
n
Recomendaciones

Resumen
   
nested parallel thread 0 thread 1 thread 0 thread 1
regions
Hi Hi Hi Hi


Figure 1.2: Graphical representation of the example explaining the concept of nested parallel
regions.
Programación
Regiones paralelas anidadas Paralela en
Fortran95
usando OpenMP

Utilidad y finalidad de las regiones anidadas: Miguel Hermanns

Introducción y
Permite desarrollar códigos paralelos y acoplarlos motivación

Regiones paralelas
Permite usar librerı́as paralelas en programas paralelos Conceptos y
terminologı́a
Ejemplos de librerı́as paralelizadas con OpenMP: Cláusulas de datos

Directivas de
Intel Math Kernel Library distribución de
trabajo

AMD Core Math Library Directivas


combinadas
Pardiso Recomendaciones

GOTO Blas Resumen

FFTW
LAPACK
...
Programación
Conceptos generales y terminologı́a habitual Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Directiva: instrucción de OpenMP que especifica la
acción a realizar Introducción y
motivación

Regiones paralelas
Cláusula: instrucción de OpenMP que impone Conceptos y
terminologı́a
condiciones a la directiva que le precede
Cláusulas de datos

Directivas de
Tarea: unidad de ejecución con memoria y stack propios distribución de
trabajo

Directivas
Región serial: parte de un programa que es ejecutada combinadas

por una única tarea Recomendaciones

Resumen

Región paralela: parte de un programa que es


ejecutada por un equipo de tareas que trabajan
conjuntamente
Programación
Conceptos generales y terminologı́a habitual Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Tarea maestra: tarea que crea a las demás tareas al
inicio de una región paralela y cuyo número de tarea Introducción y
motivación
siempre es el 0
Regiones paralelas

Conceptos y
Bloque estructurado: bloque de lı́neas de código con terminologı́a

una única entrada lógica en su parte superior y una Cláusulas de datos

Directivas de
única salida lógica en su parte inferior distribución de
trabajo

Directivas
Rutina thread-safe: una rutina es thread-safe cuando combinadas
es capaz de ser utilizada de manera simultánea e Recomendaciones

independiente por varias tareas ejecutadas en paralelo Resumen

Race condition: situación no deseable en la que el


resultado de un código depende del orden en el que se
ejecutan las tareas
Programación
Cláusulas de datos Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas generales de estas cláusulas:
Introducción y
motivación
Especifican propiedades “paralelas” de las variables Regiones paralelas

Conceptos y
Pueden aparecer tantas veces como sea necesario terminologı́a

Cláusulas de datos

Pueden usarse con cualquier directiva OpenMP Directivas de


distribución de
trabajo

Directivas
Restricciones generales de estas cláusulas: combinadas

Recomendaciones

Una variable no puede aparecer en más de una cláusula Resumen

Sólo admiten variables que sean visibles desde la


subrutina o función que incluya la cláusula
Programación
La cláusula SHARED Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Especifica que una variable es compartida por las tareas:
Introducción y
! $OMP PARALLEL SHARED (c , d ) motivación
... Regiones paralelas
! $OMP END PARALLEL
3.1. Data scope attribute clauses 39 Conceptos y
terminologı́a

Cláusulas de datos
Shared memory Directivas de
distribución de
serial region thread 0 trabajo
c d
E Directivas
x
e combinadas
c
u Recomendaciones
t
Shared memory i Resumen
   o
n
parallel region thread 0 thread 1 thread N
... c d

Figure 3.2: Graphical representation of the effect of the SHARED clause on the variables c and
d of the presented example.
Programación
La cláusula SHARED Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de las variables compartidas:
Introducción y
motivación
Todas las tareas ven su contenido
Regiones paralelas

Conceptos y
Todas las tareas pueden cambiar su contenido terminologı́a

Cláusulas de datos
Todas las tareas ven los cambios realizados
Directivas de
distribución de
trabajo

Peculiaridades de las variables compartidas: Directivas


combinadas

Recomendaciones
Los cambios no son inmediatos (cache coherency )
Resumen

Pueden requerir de sincronı́a entre tareas

Existen algunas limitaciones en Fortran (pág. 72)


Programación
La cláusula PRIVATE Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Especifica que una variable es privada a cada tarea:
Introducción y
! $OMP PARALLEL PRIVATE (a , b ) motivación
... Regiones paralelas
! $OMP END PARALLEL
38 3. PRIVATE, SHARED & Co. Conceptos y
terminologı́a

Cláusulas de datos
Shared memory Directivas de
distribución de
serial region thread 0 trabajo
a b
E Directivas
x
e combinadas
c
u Recomendaciones
t
Shared memory i Resumen
   o
n
parallel region thread 0 thread 1 thread N
...
a b a b a b


Figure 3.1: Graphical representation of the effect of the PRIVATE clause on the variables a and
b of the presented example.
Programación
La cláusula PRIVATE Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de las variables privadas:
Introducción y
motivación
Cada tarea tiene su propia versión de la variable
Regiones paralelas

Conceptos y
Eso se consigue replicando la variable en memoria terminologı́a

Cláusulas de datos
Las otras tareas no pueden ver su contenido
Directivas de
distribución de
trabajo

Peculiaridades de las variables privadas: Directivas


combinadas

Recomendaciones
Su valor inicial no está definido
Resumen

Tras la región paralela su valor tampoco está definido

Existen algunas limitaciones (pág. 73-75)


Programación
La cláusula DEFAULT Paralela en
Fortran95
usando OpenMP
Especifica el comportamiento por defecto: Miguel Hermanns

integer :: a ,b ,c , d Introducción y
motivación

! $OMP PARALLEL DEFAULT ( PRIVATE ) SHARED ( a ) Regiones paralelas


... Conceptos y
! $OMP END PARALLEL terminologı́a
40 3. PRIVATE, SHARED & Co.
Cláusulas de datos

Directivas de
Shared memory distribución de
trabajo

serial region thread 0 a b


Directivas
c d E combinadas
x
e Recomendaciones
c
u Resumen
t
Shared memory i
   o
n
parallel region thread 0 thread 1 thread N
... a
b b b
c d c d c d


Figure 3.3: Graphical representation of the effect of the DEFAULT clause on the variables of the
Programación
La cláusula DEFAULT Paralela en
Fortran95
usando OpenMP
Caracterı́sticas de la cláusula: Miguel Hermanns

Sólo puede aparecer una única vez en cada directiva Introducción y


motivación

Regiones paralelas
Admite tres opciones: PRIVATE, SHARED y NONE
Conceptos y
terminologı́a
Con NONE todas las variables deben ser definidas
Cláusulas de datos

Sólo afecta a las variables directamente visibles: Directivas de


distribución de
trabajo

Directivas
! $OMP PARALLEL DEFAULT ( SHARED ) combinadas
a = 1
b = 2 Recomendaciones

Resumen
call ejemplo (a , b )

! $OMP END PARALLEL

Las variables definidas dentro de la subrutina ejemplo no se


ven afectadas por la cláusula DEFAULT
Programación
La cláusula FIRSTPRIVATE Paralela en
Fortran95
usando OpenMP
Es una extensión de la cláusula PRIVATE: Miguel Hermanns

a = 2 Introducción y
b = 1 motivación

Regiones paralelas
! $OMP PARALLEL PRIVATE ( a ) FIRSTPRIVATE ( b )
... Conceptos y
terminologı́a
! $OMP END PARALLEL
3.1. Data scope attribute clauses 41 Cláusulas de datos

Directivas de
distribución de
Shared memory trabajo

serial region thread 0 a = 2 Directivas


combinadas
b = 1 E
x
e Recomendaciones
c
u Resumen
t
Shared memory i
   o
n
parallel region thread 0 thread 1 thread N
a = ? a = ? ... a = ?
b = 1 b = 1 b = 1


Figure 3.4: Graphical representation of the example given in the description of the
Programación
La cláusula FIRSTPRIVATE Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de las variables FIRSTPRIVATE:
Introducción y
motivación
Cada tarea tiene su propia versión de la variable
Regiones paralelas

Conceptos y
Eso se consigue replicando la variable en memoria terminologı́a

Cláusulas de datos
Las otras tareas no pueden ver su contenido
Directivas de
distribución de
Su valor es inicializado con la variable original trabajo

Directivas
combinadas

Recomendaciones
Peculiaridades de las variables FIRSTPRIVATE:
Resumen

Tras la región paralela su valor no está definido

Existen algunas limitaciones (pág. 76-77)


Programación
Resumen de cláusulas de datos Paralela en
Fortran95
usando OpenMP

Cláusulas de datos vistas: Miguel Hermanns

Introducción y
SHARED, PRIVATE, DEFAULT, FIRSTPRIVATE motivación

Regiones paralelas

Conceptos y
Cláusulas de datos adicionales: terminologı́a

Cláusulas de datos
LASTPRIVATE, REDUCTION, COPYIN, COPYPRIVATE Directivas de
distribución de
trabajo

Condiciones generales a tener en cuenta: Directivas


combinadas

Recomendaciones
Una variable sólo puede aparecer en una cláusula, salvo
Resumen
en FIRSTPRIVATE y LASTPRIVATE a la vez

El contador de un bucle siempre es privado

Cada cláusula tiene sus limitaciones (pág. 63-79)


Programación
Directivas de distribución de trabajo Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de estas directivas:
Introducción y
Distribuyen una carga de trabajo sobre varias tareas motivación

Regiones paralelas

No crean nuevas tareas, usan las ya existentes Conceptos y


terminologı́a

Cláusulas de datos
Funcionan en regiones seriales y en regiones paralelas Directivas de
distribución de
trabajo
Incluyen al final una sincronización implicita
Directivas
combinadas

Recomendaciones
Restricciones de estas directivas: Resumen

Deben ser encontradas por todas las tareas

Sólo pueden contener bloques estructurados de código


Programación
La directiva !$OMP DO Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de la directiva:
Introducción y
motivación
Distribuye la carga de un bucle entre las tareas Regiones paralelas

Conceptos y
La descomposición se hace en el espacio de iteraciones terminologı́a

Cláusulas de datos

La descomposición es modificable mediante cláusulas Directivas de


distribución de
trabajo

El contador es implı́citamente declarado PRIVATE Directivas


combinadas

Recomendaciones

! $OMP DO clause1 clause2 ... Resumen


do i = 1 , 1000
...
enddo
! $OMP END DO end_clause
Programación
2.1.1
La directiva
!$OMP DO/!$OMP
!$OMPENDDO
DO Paralela en
Fortran95
This directive-pair makes the immediately following do-loop to be executed in parallel.
usando OpenMP
For example
Ejemplo de distribución de carga de un bucle: Miguel Hermanns
!$OMP DO
do i = 1,
! $OMP 1000
PARALLEL NUM_THREADS (10) Introducción y
... motivación
! $OMP
enddo
DO
doENDi DO= 1 , 1000
!$OMP Regiones paralelas
...
Conceptos y
enddo the do-loop over the different threads: each thread computes part of the
distributes terminologı́a
! $OMP END
iterations. DO
For example, if 10 threads are in use, then in general each thread computes
Cláusulas de datos
100 iterations
! $OMP ENDof PARALLEL
the do-loop: thread 0 computes from 1 to 100, thread 1 from 101 to 200
and so on. This is shown graphically in figure 2.1. Directivas de
distribución de
trabajo

Directivas
thread 0 combinadas
serial region
E Recomendaciones
x
e Resumen
c
u
t
!$OMP DO i
   o
n
parallel region thread 0 thread 1 thread 9
...
do i = 1, 100 do i = 101, 200 do i = 901, 1000


Figure 2.1: Graphical representation of the example explaining the general working principle
Programación
La directiva !$OMP DO Paralela en
Fortran95
usando OpenMP
Restricciones de la directiva !$OMP DO:
Miguel Hermanns

En C, el bucle debe ser de un tipo determinado Introducción y


motivación

Regiones paralelas
En Fortran, el bucle no puede ser del tipo do while
Conceptos y
terminologı́a
El contador debe ser el mismo para todas las tareas Cláusulas de datos

Directivas de
distribución de
Sólo admite bloques estructurados de código trabajo

Directivas
Las variables SHARED sólo se actualizan al final combinadas

Recomendaciones

Resumen
Programación
La directiva !$OMP SECTIONS Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de la directiva:
Introducción y
motivación
Cada tarea ejecuta una de las secciones Regiones paralelas

Conceptos y
Cada sección es ejecutada una única vez terminologı́a

Cláusulas de datos

Permite implementar el paralelismo tipo MIMD Directivas de


distribución de
trabajo

Directivas
combinadas
! $OMP SECTIONS clause1 clause2 ...
! $OMP SECTION Recomendaciones

... Resumen
! $OMP SECTION
...
...
! $OMP END SECTIONS end_clause
Programación
La
16 directiva !$OMP SECTIONS 2. OpenMP constructs Paralela en
Fortran95
usando OpenMP
!$OMP SECTIONS
Ejemplo de asignación de tareas:
!$OMP SECTION Miguel Hermanns
write(*,*) "Hello"
! $OMP
!$OMP SECTIONS
SECTION
write(*,*) "Hi" Introducción y
! $OMP SECTION motivación
!$OMP SECTION
write (* ,*) " Hello "
write(*,*) "Bye"
! $OMP Regiones paralelas
!$OMP END SECTION
SECTIONS
write (* ,*) " Hi " Conceptos y
Now each
! $OMP of the messages Hello, Hi and Bye is printed only once on the screen. This
SECTION terminologı́a
example
writeis shown
(* ,*)graphically
" Bye " in figure 2.2. The OpenMP specification does not specify Cláusulas de datos
the way in which the different tasks are distributed over the team of threads, leaving this
! $OMP END SECTIONS
point open to the compiler developers. Directivas de
distribución de
trabajo

Directivas
thread 0 combinadas
serial region
E Recomendaciones
x
e Resumen
c
u
t
!$OMP SECTIONS i
   o
n
parallel region thread 0 thread 1 thread 2
write(*,*) "Hello" write(*,*) "Hi" write(*,*) "Bye"


Figure 2.2: Graphical representation of the example explaining the working principle of the
Programación
La directiva !$OMP SECTIONS Paralela en
Fortran95
usando OpenMP
Restricciones de la directiva:
Miguel Hermanns

La manera de asignar secciones a tareas no está definida Introducción y


motivación

Regiones paralelas
Cada sección debe ser un bloque estructurado de código
Conceptos y
terminologı́a
No se crean nuevas tareas, se usan las existentes Cláusulas de datos

Directivas de
distribución de
Las variables SHARED sólo se actualizan al final trabajo

Directivas
combinadas

Recomendaciones

Resumen
Programación
La directiva !$OMP WORKSHARE Paralela en
Fortran95
usando OpenMP
Caracterı́sticas de la directiva:
Miguel Hermanns

Es especı́fica para Fortran 95 Introducción y


motivación

Explota las capacidades paralelas de Fortran 95 Regiones paralelas

Conceptos y
terminologı́a
Distribuye las instrucciones matriciales entre las tareas
Cláusulas de datos

Directivas de
Soporta las siguientes instrucciones matriciales: distribución de
trabajo

matmul, dot product, sum, product, maxval, minval, count, Directivas


any, all, spread, pack, unpack, reshape, transpose, eoshift, combinadas

cshift, minloc, maxloc, forall, where Recomendaciones

Resumen
Las instrucciones deben comportarse como si
estuvieran en una región serial
! $OMP WORKSHARE
...
! $OMP END WORKSHARE end_clause
Programación
La directiva !$OMP WORKSHARE Paralela en
Fortran95
usando OpenMP
Ejemplo de distribución de instrucciones matriciales: Miguel Hermanns

real :: A (100 ,100) , B (100 ,100) , C (100 ,100)


Introducción y
motivación
! $OMP PARALLEL DEFAULT ( SHARED )
Regiones paralelas
! $OMP WORKSHARE
A = matmul (B , C ) Conceptos y
terminologı́a
! $OMP END WORKSHARE
! $OMP END PARALLEL Cláusulas de datos

Directivas de
distribución de
trabajo

Directivas
serial region thread 0 combinadas
E
x Recomendaciones
e
c Resumen
u
t
!$OMP WORKSHARE i
o
? ? ? n
parallel region thread 0 thread 1 thread 9
...
A = matmul(B,C)|0 A = matmul(B,C)|1 A = matmul(B,C)|9
?
Programación
La directiva !$OMP WORKSHARE Paralela en
Fortran95
usando OpenMP
Restricciones de la directiva:
Miguel Hermanns

La asignación del trabajo a las tareas no está definida Introducción y


motivación

Regiones paralelas
El compilador debe insertar sincronizaciones suficientes
Conceptos y
para que el comportamiento sea el correcto terminologı́a

Cláusulas de datos

Sólo se pueden hacer llamadas a funciones que sean del Directivas de


distribución de
tipo elemental trabajo

Directivas
combinadas
Existen restricciones al uso de variables PRIVATE
Recomendaciones

Resumen
Peculiaridad de la directiva:

Las variables SHARED se actualizan constantemente


Programación
Directivas combinadas de distribución de trabajo Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
Caracterı́sticas de las directivas combinadas:
Introducción y
motivación
Forma abreviada de escribir dos directivas consecutivas Regiones paralelas

Conceptos y
Equivalentes a una región paralela con una única terminologı́a

directiva de distribución de trabajo Cláusulas de datos

Directivas de
distribución de
Admiten las cláusulas de ambas directivas trabajo

Directivas
combinadas
Restricciones de las directivas combinadas: Recomendaciones

Resumen
El comportamiento de un programa no está definido si
éste depende de la asociación de una cláusula con la
región paralela o con la directiva de trabajo
Programación
Directivas combinadas de distribución de trabajo Paralela en
Fortran95
usando OpenMP
Equivalencia de las directivas combinadas: Miguel Hermanns

! $OMP PARALLEL Introducción y


! $OMP PARALLEL DO ! $OMP DO motivación
... ... Regiones paralelas
! $OMP END PARALLEL DO ! $OMP END DO
! $OMP END PARALLEL Conceptos y
terminologı́a

Cláusulas de datos

Directivas de
! $OMP PARALLEL distribución de
trabajo
! $OMP PARALLEL SECTIONS ! $OMP SECTIONS
... ... Directivas
! $OMP END PARALLEL SECTIONS ! $OMP END SECTIONS combinadas

! $OMP END PARALLEL Recomendaciones

Resumen

! $OMP PARALLEL
! $OMP PARALLEL WORKSHARE ! $OMP WORKSHARE
... ...
! $OMP END PARALLEL WORKSHARE ! $OMP END WORKSHARE
! $OMP END PARALLEL
Programación
Recomendaciones personales Paralela en
Fortran95
usando OpenMP

Miguel Hermanns
1 Revisar el estándar a la hora de programar con OpenMP
Introducción y
motivación
2 Buscar sencillez y no optar por soluciones rebuscadas Regiones paralelas

Conceptos y
terminologı́a
3 Especificar el número de tareas con OMP NUM THREADS
Cláusulas de datos

Directivas de
4 Usar las cláusulas de datos sólo con !$OMP PARALLEL distribución de
trabajo

Directivas
combinadas
5 Declarar todas las variables como SHARED y sólo las
Recomendaciones
mı́nimas necesarias como PRIVATE
Resumen

6 No usar directivas combinadas de distribución de trabajo

7 No escribir a disco desde una región paralela


Programación
Resumen Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

1 Introducción y motivación de OpenMP Introducción y


motivación

Regiones paralelas
2 Caracterı́sticas fundamentales de OpenMP
Conceptos y
terminologı́a
3 Regiones paralelas y regiones seriales Cláusulas de datos

Directivas de
distribución de
4 Conceptos generales y terminologı́a habitual trabajo

Directivas
combinadas
5 Variables compartidas y variables privadas Recomendaciones

Resumen
6 Distribución de la carga computacional

7 Recomendaciones personales
Programación
Agradecimientos Paralela en
Fortran95
usando OpenMP

Miguel Hermanns

Introducción y
motivación

Regiones paralelas

Conceptos y
terminologı́a

Cláusulas de datos
Oscar Flores Directivas de
Universidad Politécnica de Madrid distribución de
trabajo

Directivas
combinadas

Recomendaciones

Resumen

También podría gustarte