You are on page 1of 46

Programaci

on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Programacion Paralela en Fortran95


usando OpenMP
(Parte I)
Miguel Hermanns
Universidad Polit
ecnica de Madrid, Espa
na

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

Regiones paralelas y regiones seriales

Cl
ausulas de datos

Conceptos generales y terminologa habitual

Directivas de
distribuci
on de
trabajo
Directivas
combinadas

Variables compartidas y variables privadas

Recomendaciones
Resumen

Distribucion de la carga computacional

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

Toda la informacion esta disponible en la pagina web:


www.openmp.org

Quien define OpenMP?


El estandar es definido y revisado por el comite
OpenMP Architecture Review Board
compuesto actualmente por: (1/2)

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa

U.S. DoD: Aeronautical Systems Center

Cl
ausulas de datos

cOMPunity (Comunidad de usuarios de OpenMP)

Directivas de
distribuci
on de
trabajo

Edinburgh Parallel Computing Centre (EPCC)

Directivas
combinadas

Laboratorio NASA Ames


ST Microelectronics: The Portland Group
Fujitsu
Hewlett Packard

Recomendaciones
Resumen

Quien define OpenMP?


El estandar es definido y revisado por el comite
OpenMP Architecture Review Board
compuesto actualmente por: (2/2)

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa

International Business Machines (IBM)

Cl
ausulas de datos

Intel Corporation

Directivas de
distribuci
on de
trabajo

KAI Software Lab (KSL)

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

Se perdio interes en las maquinas SMP


El estandar OpenMP se introdujo para resolver esto:
En 1997 se publico la versi
on 1.0
En 1999 se publico la versi
on 1.1
En 2000 se publico la versi
on 2.0
En 2005 se publico la versi
on 2.5

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

Caractersticas fundamentales de OpenMP


OpenMP se fundamenta en directivas y clausulas:
Las directivas especifican que hacer
Las clausulas indican c
omo hacerlo

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

Tipos de directivas en OpenMP:


Directivas de distribuci
on de trabajo

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

Caractersticas fundamentales de OpenMP

Programaci
on
Paralela en
Fortran95
usando OpenMP

Se definen dos tipos de comentarios OpenMP:

Miguel Hermanns

!$OMP: precede a todas las directivas de OpenMP:

Introducci
on y
motivaci
on
Regiones paralelas

! $OMP PARALLEL DEFAULT ( NONE ) SHARED (A , B ) &


! $OMP PRIVATE (C , D ) REDUCTION (+: A )

Conceptos y
terminologa
Cl
ausulas de datos

!$: precede a lneas que s


olo se compilan con OpenMP:
Interval = ( b - a )
! $ 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)

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

Ambos centinelas no pueden ir precedidos de c


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

Caractersticas fundamentales de OpenMP

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

La descomposicion de los datos es automatica


Admite la paralelizaci
on incremental del c
odigo

Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo

Mismo codigo fuente para las versiones serial y paralela

Directivas
combinadas

Permite implementar granularidad gruesa y fina

Resumen

Recomendaciones

Elevada portabilidad

Caractersticas fundamentales de OpenMP

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

El estandar solo contempla C y Fortran


Solo es eficiente en maquinas de memoria compartida

Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo

En general la eficiencia paralela es baja

Directivas
combinadas

La escalabilidad esta limitada por el acceso a memoria

Resumen

Recomendaciones

Aumentar la eficiencia requiere reestructurar el codigo

Compiladores que soportan OpenMP

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

Absoft Pro FortranMP


Lahey/Fujitsu Fortran 95
Fujitsu-Siemens Fortran 95 (Solaris)
Intel Software Development Products
PathScale
GNU GCC (a partir de la versi
on 4.2)
HP

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

Compiladores que soportan OpenMP

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

El soporte para OpenMP ha de ser activado:

Introducci
on y
motivaci
on

Versi
on serial de un programa:

Conceptos y
terminologa

Regiones paralelas

hermanns@bender:~$ ifort ejemplo.f90


Versi
on paralela de un programa:
hermanns@bender:~$ ifort -openmp ejemplo.f90

Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

En casi todos los compiladores la opci


on es -openmp

Crear regiones paralelas con !$OMP PARALLEL


Las directivas !$OMP PARALLEL/!$OMP END PARALLEL:
Definen una regi
on paralela
!$OMP PARALLEL crea un conjunto de tareas
Las cl
ausulas especifican condiciones a cumplir

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos

Todas las tareas ejecutan las instrucciones

Directivas de
distribuci
on de
trabajo

!$OMP END PARALLEL finaliza la regi


on paralela

Directivas
combinadas

Sint
axis de la directiva:
! $OMP PARALLEL clause1 clause2 ...
... instructions ...
! $OMP END PARALLEL

Recomendaciones
Resumen

Programaci
on
Paralela en
Fortran95
usando OpenMP

Crear regiones paralelas con !$OMP PARALLEL


Ejemplo de region paralela:

Miguel Hermanns
Introducci
on y
motivaci
on

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

Regiones paralelas
Conceptos y
terminologa

6Representaci
on

Fortran Application Program Interface


gr
afica 1.delOpenMP
ejemplo:

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

Maneras de especificar el numero de tareas


La variable de entorno OMP NUM THREADS:
hermanns@bender:~$ export OMP NUM THREADS=4
La subrutina OMP set num threads:

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

Cada una de ellas sobreescribe la especificaci


on anterior

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

La opcion condition permite sopesarlo:


Si condition = TRUE entonces ejecuta en paralelo
Si condition = FALSE entonces ejecuta en serie

Solo se puede imponer una condici


on

Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

! $OMP PARALLEL IF ( condition )


... instructions ...
! $OMP END PARALLEL

Regiones paralelas anidadas


Son regiones paralelas creadas en regiones paralelas:
Crea un nuevo conjunto de tareas
Esta funcionalidad puede habilitarse y deshabilitarse
Lo controla la variable de entorno OMP NESTED, que
puede ser OMP NESTED=TRUE u OMP NESTED=FALSE
El compilador no est
a obligado por el estandar a
soportarlo

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

Regiones paralelas anidadas

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

nested parallel thread 0


regions
Hi

thread 1

thread 0

thread 1

Hi

Hi

Hi


Figure 1.2: Graphical representation of the example explaining the concept of nested parallel
regions.

Regiones paralelas anidadas


Utilidad y finalidad de las regiones anidadas:
Permite desarrollar c
odigos paralelos y acoplarlos
Permite usar libreras paralelas en programas paralelos
Ejemplos de libreras paralelizadas con OpenMP:
Intel Math Kernel Library
AMD Core Math Library
Pardiso
GOTO Blas
FFTW
LAPACK
...

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

Conceptos generales y terminologa habitual


Directiva: instruccion de OpenMP que especifica la
accion a realizar

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

Tarea: unidad de ejecuci


on con memoria y stack propios

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

Conceptos generales y terminologa habitual


Tarea maestra: tarea que crea a las demas tareas al
inicio de una region paralela y cuyo n
umero de tarea
siempre es el 0
Bloque estructurado: bloque de lneas de c
odigo con
una u
nica entrada logica en su parte superior y una
u
nica salida logica en su parte inferior
Rutina thread-safe: una rutina es thread-safe cuando
es capaz de ser utilizada de manera simultanea e
independiente por varias tareas ejecutadas en paralelo
Race condition: situaci
on no deseable en la que el
resultado de un codigo depende del orden en el que se
ejecutan las tareas

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

Pueden usarse con cualquier directiva OpenMP


Restricciones generales de estas clausulas:

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones

Una variable no puede aparecer en mas de una clausula


Solo admiten variables que sean visibles desde la
subrutina o funcion que incluya la clausula

Resumen

Programaci
on
Paralela en
Fortran95
usando OpenMP

La clausula SHARED

Miguel Hermanns

Especifica que una variable es compartida por las tareas:

Introducci
on y
motivaci
on

! $OMP PARALLEL SHARED (c , d )


...
! $OMP END PARALLEL
3.1. Data scope attribute clauses

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

Caractersticas de las variables compartidas:


Todas las tareas ven su contenido
Todas las tareas pueden cambiar su contenido
Todas las tareas ven los cambios realizados

Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo

Peculiaridades de las variables compartidas:


Los cambios no son inmediatos (cache coherency )

Directivas
combinadas
Recomendaciones
Resumen

Pueden requerir de sincrona entre tareas


Existen algunas limitaciones en Fortran (pag. 72)

Programaci
on
Paralela en
Fortran95
usando OpenMP

La clausula PRIVATE

Miguel Hermanns

Especifica que una variable es privada a cada tarea:

Introducci
on y
motivaci
on

! $OMP PARALLEL PRIVATE (a , b )


...
! $OMP END PARALLEL

Regiones paralelas

3. PRIVATE, SHARED & Co.

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

Caractersticas de las variables privadas:


Cada tarea tiene su propia versi
on de la variable
Eso se consigue replicando la variable en memoria
Las otras tareas no pueden ver su contenido

Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo

Peculiaridades de las variables privadas:


Su valor inicial no est
a definido

Directivas
combinadas
Recomendaciones
Resumen

Tras la region paralela su valor tampoco est


a definido
Existen algunas limitaciones (pag. 73-75)

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

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


...
! $OMP END PARALLEL
40
3. PRIVATE, SHARED & Co.

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

Las variables definidas dentro de la subrutina ejemplo no se


ven afectadas por la clausula DEFAULT

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

! $OMP PARALLEL PRIVATE ( a ) FIRSTPRIVATE ( b )


...
! $OMP END PARALLEL
3.1. Data scope attribute clauses

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

Graphical representation of the example given in the description of the

Directivas
combinadas
Recomendaciones
Resumen

La clausula FIRSTPRIVATE

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Caractersticas de las variables FIRSTPRIVATE:


Cada tarea tiene su propia versi
on de la variable
Eso se consigue replicando la variable en memoria
Las otras tareas no pueden ver su contenido
Su valor es inicializado con la variable original

Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas

Peculiaridades de las variables FIRSTPRIVATE:

Recomendaciones
Resumen

Tras la region paralela su valor no est


a definido
Existen algunas limitaciones (pag. 76-77)

Resumen de clausulas de datos


Clausulas de datos vistas:
SHARED, PRIVATE, DEFAULT, FIRSTPRIVATE

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas

Clausulas de datos adicionales:

Conceptos y
terminologa
Cl
ausulas de datos

LASTPRIVATE, REDUCTION, COPYIN, COPYPRIVATE


Condiciones generales a tener en cuenta:
Una variable solo puede aparecer en una clausula, salvo
en FIRSTPRIVATE y LASTPRIVATE a la vez
El contador de un bucle siempre es privado
Cada clausula tiene sus limitaciones (pag. 63-79)

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

Directivas de distribucion de trabajo


Caractersticas de estas directivas:
Distribuyen una carga de trabajo sobre varias tareas

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas

No crean nuevas tareas, usan las ya existentes


Funcionan en regiones seriales y en regiones paralelas
Incluyen al final una sincronizaci
on implicita

Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones

Restricciones de estas directivas:


Deben ser encontradas por todas las tareas
Solo pueden contener bloques estructurados de codigo

Resumen

La directiva !$OMP DO

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Caractersticas de la directiva:
Introducci
on y
motivaci
on

Distribuye la carga de un bucle entre las tareas

Regiones paralelas

La descomposicion se hace en el espacio de iteraciones

Conceptos y
terminologa
Cl
ausulas de datos

La descomposicion es modificable mediante clausulas


El contador es implcitamente declarado PRIVATE

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones

! $OMP DO clause1 clause2 ...


do i = 1 , 1000
...
enddo
! $OMP END DO end_clause

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

Ejemplo de distribucion de carga de un bucle:

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

El contador debe ser el mismo para todas las tareas

Cl
ausulas de datos

Solo admite bloques estructurados de c


odigo

Directivas de
distribuci
on de
trabajo

Las variables SHARED s


olo se actualizan al final

Directivas
combinadas
Recomendaciones
Resumen

La directiva !$OMP SECTIONS

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Caractersticas de la directiva:
Introducci
on y
motivaci
on

Cada tarea ejecuta una de las secciones

Regiones paralelas

Cada seccion es ejecutada una u


nica vez

Conceptos y
terminologa
Cl
ausulas de datos

Permite implementar el paralelismo tipo MIMD

Directivas de
distribuci
on de
trabajo
Directivas
combinadas

! $OMP
! $OMP
...
! $OMP
...
...
! $OMP

SECTIONS clause1 clause2 ...


SECTION

Recomendaciones
Resumen

SECTION

END SECTIONS end_clause

16 directiva !$OMP SECTIONS


La

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

Ejemplo de asignacion de tareas:

Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas

write (* ,*) " Hi "


Now each
of the messages Hello, Hi and Bye is printed only once on the screen. This
! $OMP
SECTION
example
is shown
write
(* ,*)graphically
" Bye " in gure 2.2. The OpenMP specication does not specify
the way in which the dierent tasks are distributed over the team of threads, leaving this
! $OMP END SECTIONS
point open to the compiler developers.

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

La directiva !$OMP SECTIONS


Restricciones de la directiva:
La manera de asignar secciones a tareas no esta definida
Cada seccion debe ser un bloque estructurado de codigo

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa

No se crean nuevas tareas, se usan las existentes

Cl
ausulas de datos

Las variables SHARED s


olo se actualizan al final

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

La directiva !$OMP WORKSHARE


Caractersticas de la directiva:

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Es especfica para Fortran 95


Explota las capacidades paralelas de Fortran 95
Distribuye las instrucciones matriciales entre las tareas

Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos

Soporta las siguientes instrucciones matriciales:

Directivas de
distribuci
on de
trabajo

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


any, all, spread, pack, unpack, reshape, transpose, eoshift,
cshift, minloc, maxloc, forall, where

Directivas
combinadas
Recomendaciones
Resumen

Las instrucciones deben comportarse como si


estuvieran en una regi
on serial
! $OMP WORKSHARE
...
! $OMP END WORKSHARE end_clause

Programaci
on
Paralela en
Fortran95
usando OpenMP

La directiva !$OMP WORKSHARE


Ejemplo de distribucion de instrucciones matriciales:

Miguel Hermanns

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


! $OMP
! $OMP
A =
! $OMP
! $OMP

Introducci
on y
motivaci
on

PARALLEL DEFAULT ( SHARED )


WORKSHARE
matmul (B , C )
END WORKSHARE
END PARALLEL

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

La directiva !$OMP WORKSHARE


Restricciones de la directiva:
La asignacion del trabajo a las tareas no esta definida

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns
Introducci
on y
motivaci
on
Regiones paralelas

El compilador debe insertar sincronizaciones suficientes


para que el comportamiento sea el correcto

Conceptos y
terminologa

Solo se pueden hacer llamadas a funciones que sean del


tipo elemental

Directivas de
distribuci
on de
trabajo

Cl
ausulas de datos

Existen restricciones al uso de variables PRIVATE

Directivas
combinadas
Recomendaciones
Resumen

Peculiaridad de la directiva:
Las variables SHARED se actualizan constantemente

Directivas combinadas de distribucion de trabajo

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Caractersticas de las directivas combinadas:


Forma abreviada de escribir dos directivas consecutivas

Introducci
on y
motivaci
on
Regiones paralelas
Conceptos y
terminologa

Equivalentes a una regi


on paralela con una u
nica
directiva de distribuci
on de trabajo

Cl
ausulas de datos

Admiten las clausulas de ambas directivas

Directivas de
distribuci
on de
trabajo
Directivas
combinadas

Restricciones de las directivas combinadas:


El comportamiento de un programa no esta definido si
este depende de la asociaci
on de una clausula con la
region paralela o con la directiva de trabajo

Recomendaciones
Resumen

Directivas combinadas de distribucion de trabajo


Equivalencia de las directivas combinadas:
! $OMP PARALLEL DO
...
! $OMP END PARALLEL DO

! $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 PARALLEL SECTIONS


...
! $OMP END PARALLEL SECTIONS

! $OMP
! $OMP
...
! $OMP
! $OMP

PARALLEL
SECTIONS
END SECTIONS
END PARALLEL

Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

! $OMP PARALLEL WORKSHARE


...
! $OMP END PARALLEL WORKSHARE

! $OMP
! $OMP
...
! $OMP
! $OMP

PARALLEL
WORKSHARE
END WORKSHARE
END PARALLEL

Recomendaciones personales

Programaci
on
Paralela en
Fortran95
usando OpenMP
Miguel Hermanns

Revisar el estandar a la hora de programar con OpenMP


Introducci
on y
motivaci
on

Buscar sencillez y no optar por soluciones rebuscadas


Especificar el n
umero de tareas con OMP NUM THREADS

Usar las clausulas de datos s


olo con !$OMP PARALLEL

Declarar todas las variables como SHARED y s


olo las
mnimas necesarias como PRIVATE

Regiones paralelas
Conceptos y
terminologa
Cl
ausulas de datos
Directivas de
distribuci
on de
trabajo
Directivas
combinadas
Recomendaciones
Resumen

No usar directivas combinadas de distribuci


on de trabajo

No escribir a disco desde una regi


on paralela

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

Regiones paralelas y regiones seriales

Cl
ausulas de datos

Conceptos generales y terminologa habitual

Directivas de
distribuci
on de
trabajo
Directivas
combinadas

Variables compartidas y variables privadas

Recomendaciones
Resumen

Distribucion de la carga computacional

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

You might also like