Professional Documents
Culture Documents
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
26 de abril de 2007
Estructura de la clase
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introduccion y motivaci
on de OpenMP
Caractersticas fundamentales de OpenMP
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Recomendaciones personales
Que es OpenMP?
El OpenMP Application Program Interface (API) es:
Conjunto de directivas de compilaci
on, libreras y
variables de entorno que permiten expresar el paralelismo
de tareas en programas escritos en C, C++ y Fortran
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Intel Corporation
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
NEC Corporation
Silicon Graphics Inc. (SGI)
Sun Microsystems
Universidad RWTH Aachen
Recomendaciones
Resumen
Historia de OpenMP
Antes de la introduccion de OpenMP:
Cada fabricante tena su propio estandar
Los programas tenan portabilidad nula
El estandar ANSI X3H5 fracas
o por falta de apoyo
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Se a
naden como comentarios al c
odigo
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas de sincronizaci
on de tareas
Directivas
combinadas
Recomendaciones
Tipos de cl
ausulas en OpenMP:
Clausulas de datos
Clausulas de comportamiento
Clausulas de sincrona
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Ventajas de OpenMP:
Sencillo: no requiere el envo de mensajes como en MPI
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Resumen
Recomendaciones
Elevada portabilidad
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Inconvenientes de OpenMP:
Requiere un compilador que entienda OpenMP
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Resumen
Recomendaciones
Programaci
on
Paralela en
Fortran95
usando OpenMP
SGI MIPSpro
Miguel Hermanns
IBM XL
Introducci
on y
motivaci
on
Sun Studio
Portland Group Compilers and Tools
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Versi
on serial de un programa:
Conceptos y
terminologa
Regiones paralelas
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Sint
axis de la directiva:
! $OMP PARALLEL clause1 clause2 ...
... instructions ...
! $OMP END PARALLEL
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
! $OMP PARALLEL
write (* ,*) " Hello "
! $OMP END PARALLEL
Regiones paralelas
Conceptos y
terminologa
6Representaci
on
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
serial region
parallel region
Directivas
combinadas
thread 0
thread 0
thread 1
write(*,*) "Hello"
write(*,*) "Hello"
thread Np
...
E
x
e
c
u
t
i
o
n
write(*,*) "Hello"
Figure 1.1: Graphical representation of the example explaining the working principle of the
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
use omp_lib
Cl
ausulas de datos
call O M P _ s e t _ n u m _ t h r e a d s (4)
! $OMP PARALLEL
...
! $OMP END PARALLEL
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
La cl
ausula NUM THREADS:
! $OMP PARALLEL NUM_THREADS (4)
...
! $OMP END PARALLEL
Resumen
La clausula IF
Caractersticas de la clausula:
Crear una region paralela es algo costoso
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
! $OMP PARALLEL
write (* ,*) " Hello "
! $OMP PARALLEL
write (* ,*) " Hi "
! $OMP END PARALLEL
! $OMP END PARALLEL
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
serial region
Introducci
on y
motivaci
on
thread 0
Regiones paralelas
Conceptos y
terminologa
parallel region
E
x
e
c
u
t
i
o
n
thread 0
thread 1
Hello
Hello
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
thread 1
thread 0
thread 1
Hi
Hi
Hi
Figure 1.2: Graphical representation of the example explaining the concept of nested parallel
regions.
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Cl
ausula: instruccion de OpenMP que impone
condiciones a la directiva que le precede
Conceptos y
terminologa
Directivas de
distribuci
on de
trabajo
Cl
ausulas de datos
Regi
on serial: parte de un programa que es ejecutada
por una u
nica tarea
Directivas
combinadas
Recomendaciones
Resumen
Regi
on paralela: parte de un programa que es
ejecutada por un equipo de tareas que trabajan
conjuntamente
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Clausulas de datos
Caractersticas generales de estas clausulas:
Especifican propiedades paralelas de las variables
Pueden aparecer tantas veces como sea necesario
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
La clausula SHARED
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
39
Conceptos y
terminologa
Cl
ausulas de datos
Shared memory
serial region
thread 0
c
parallel region
Directivas de
distribuci
on de
trabajo
thread 0
thread 1
Shared memory
thread N
...
E
x
e
c
u
t
i
o
n
d
Figure 3.2: Graphical representation of the eect of the SHARED clause on the variables c and
d of the presented example.
Directivas
combinadas
Recomendaciones
Resumen
La clausula SHARED
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
La clausula PRIVATE
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
38
Conceptos y
terminologa
Cl
ausulas de datos
Shared memory
serial region
thread 0
a
parallel region
Directivas de
distribuci
on de
trabajo
thread 0
a
thread 1
a
thread N
...
Shared memory
E
x
e
c
u
t
i
o
n
b
Figure 3.1: Graphical representation of the eect of the PRIVATE clause on the variables a and
b of the presented example.
Directivas
combinadas
Recomendaciones
Resumen
La clausula PRIVATE
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
La clausula DEFAULT
Especifica el comportamiento por defecto:
Miguel Hermanns
integer :: a ,b ,c , d
Introducci
on y
motivaci
on
thread 0
parallel region
thread 0
c
b
d
thread 1
c
b
d
Shared memory
thread N
...
c
b
d
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Shared memory
serial region
Regiones paralelas
Conceptos y
terminologa
E
x
e
c
u
t
i
o
n
a
Figure 3.3: Graphical representation of the eect of the DEFAULT clause on the variables of the
Directivas
combinadas
Recomendaciones
Resumen
La clausula DEFAULT
Caractersticas de la clausula:
Solo puede aparecer una u
nica vez en cada directiva
Admite tres opciones: PRIVATE, SHARED y NONE
Con NONE todas las variables deben ser definidas
Solo afecta a las variables directamente visibles:
! $OMP PARALLEL DEFAULT ( SHARED )
a = 1
b = 2
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
call ejemplo (a , b )
! $OMP END PARALLEL
Programaci
on
Paralela en
Fortran95
usando OpenMP
La clausula FIRSTPRIVATE
Es una extensi
on de la clausula PRIVATE:
Miguel Hermanns
a = 2
b = 1
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
41
Shared memory
serial region
thread 0
parallel region
Figure 3.4:
a = 2
b = 1
thread 0
thread 1
a = ?
b = 1
a = ?
b = 1
thread N
...
a = ?
b = 1
Shared memory
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
E
x
e
c
u
t
i
o
n
Directivas
combinadas
Recomendaciones
Resumen
La clausula FIRSTPRIVATE
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
La directiva !$OMP DO
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Caractersticas de la directiva:
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
2.1.1
!$OMP DO/!$OMP
DO
La
directiva
!$OMPENDDO
This directive-pair makes the immediately following do-loop to be executed in parallel.
For example
Miguel Hermanns
!$OMP DO
do i = 1,
1000
! $OMP
PARALLEL
NUM_THREADS (10)
...
! $OMP
DO
enddo
doENDi DO= 1 , 1000
!$OMP
Introducci
on y
motivaci
on
Regiones paralelas
...
enddo the do-loop over the dierent threads: each thread computes part of the
distributes
! $OMP END
DO
iterations.
For example,
if 10 threads are in use, then in general each thread computes
100
iterations
the do-loop: thread 0 computes from 1 to 100, thread 1 from 101 to 200
! $OMP
ENDof PARALLEL
and so on. This is shown graphically in gure 2.1.
serial region
!$OMP DO
parallel region
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
thread 0
Programaci
on
Paralela en
Fortran95
usando OpenMP
thread 0
thread 1
do i = 1, 100
do i = 101, 200
thread 9
...
E
x
e
c
u
t
i
o
n
do i = 901, 1000
Figure 2.1: Graphical representation of the example explaining the general working principle
Recomendaciones
Resumen
La directiva !$OMP DO
Restricciones de la directiva !$OMP DO:
En C, el bucle debe ser de un tipo determinado
En Fortran, el bucle no puede ser del tipo do while
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Caractersticas de la directiva:
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
! $OMP
! $OMP
...
! $OMP
...
...
! $OMP
Recomendaciones
Resumen
SECTION
2. OpenMP constructs
!$OMP SECTIONS
!$OMP SECTION
write(*,*) "Hello"
!$OMP
SECTION
! $OMP
SECTIONS
write(*,*)
"Hi"
! $OMP
SECTION
!$OMP SECTION
write
(*
,*) " Hello "
write(*,*) "Bye"
! $OMP
!$OMP
END SECTION
SECTIONS
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
serial region
!$OMP SECTIONS
parallel region
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
thread 0
Programaci
on
Paralela en
Fortran95
usando OpenMP
thread 0
thread 1
thread 2
write(*,*) "Hello"
write(*,*) "Hi"
write(*,*) "Bye"
E
x
e
c
u
t
i
o
n
Figure 2.2: Graphical representation of the example explaining the working principle of the
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
serial region
Directivas
combinadas
thread 0
!$OMP WORKSHARE
?
parallel region
thread 0
thread 1
A = matmul(B,C)|0
A = matmul(B,C)|1
thread 9
...
E
x
e
c
u
t
i
o
n
A = matmul(B,C)|9
?
Recomendaciones
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Directivas de
distribuci
on de
trabajo
Cl
ausulas de datos
Directivas
combinadas
Recomendaciones
Resumen
Peculiaridad de la directiva:
Las variables SHARED se actualizan constantemente
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
! $OMP
! $OMP
...
! $OMP
! $OMP
PARALLEL
DO
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
END DO
END PARALLEL
Conceptos y
terminologa
Cl
ausulas de datos
! $OMP
! $OMP
...
! $OMP
! $OMP
PARALLEL
SECTIONS
END SECTIONS
END PARALLEL
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
! $OMP
! $OMP
...
! $OMP
! $OMP
PARALLEL
WORKSHARE
END WORKSHARE
END PARALLEL
Recomendaciones personales
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Resumen
Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introduccion y motivaci
on de OpenMP
Caractersticas fundamentales de OpenMP
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen
Recomendaciones personales
Programaci
on
Paralela en
Fortran95
usando OpenMP
Agradecimientos
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Oscar Flores
Universidad Politecnica de Madrid
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen