57
Tomás Morales Servicio de Modelización de la Calidad del Aire El sistema de NWP HARMONIE: Introducción a la Computación de Altas Prestaciones Agencia Estatal de Meteorología (AEMET) 20-23 octubre 2014, Madrid

El sistema NWP HARMONIE: Introducción a la Computación de Altas

Embed Size (px)

Citation preview

Page 1: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Tomás Morales!!Servicio de Modelización de la Calidad del Aire

El sistema de NWP HARMONIE: Introducción a la Computación de Altas

Prestaciones

!Agencia Estatal de Meteorología (AEMET) 20-23 octubre 2014, Madrid

Page 2: El sistema NWP HARMONIE: Introducción a la Computación de Altas

El sistema de NWP HARMONIE!!Contenidos sección Computación de Altas Prestaciones en los modelos IFS / HARMONIE. !!

• Día 20: !• Introducción a la computación de altas prestaciones: paralización de

código.!• Programación en memoria compartida.!

• Introducción teórica. !• Programación usando OpenMP.!• Ejercicios prácticos.!• OpenMP en los modelos IFS / HARMONIE.!

• Día 21:!• Programación en memoria distribuida.!

• Introducción teórica. !• Programación usando MPI.!• Ejercicios prácticos.!• MPI en los modelos IFS / HARMONIE.!

• Día 22:!• Programación híbrida: memoria distribuida + memoria compartida.!

• Implementación híbrida.!• Ejercicios prácticos.!• Programación híbrida en los modelos IFS / HARMONIE.!

• Nuevas técnicas de paralización y optimización en los modelos IFS / HARMONIE

Page 3: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Introducción a la Computación de Altas Prestaciones.

Page 4: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!

• ¿ Por qué la Computación de Altas Prestaciones ?!!

• ¿ Cómo se puede analizar la calidad de un algoritmo ?!!

• ¿ Por qué el paradigma de Pase de Mensaje ?!!

• ¿ Por qué el paradigma de Memoria Compartida ?!!

• ¿ Tiene utilidad en los modelos meteorológicos ?

Cuestiones!

!Introducción a la computación de Altas Prestaciones

Page 5: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Conceptos iniciales!

¿ Qué es la Computación de Altas Prestaciones ?

Page 6: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Conceptos iniciales!

Áreas que más demandan !capacidad de computo:!!

• Inteligencia Artificial • Predicción del tiempo • Procesado de imágenes • Análisis de Datos ( meteorología, otros) • etc

H+00 H+48

Tiempo de!computo!

secuencial

NWP

Page 7: El sistema NWP HARMONIE: Introducción a la Computación de Altas

H+00 H+48

NWP

Paso de tiempo numérico

datos/3datos/3 datos/3

P3P2P1

tiempo computo ' tiempo secuencial

3

¿ ?

!Introducción a la computación de Altas Prestaciones

Conceptos iniciales!

datos

Page 8: El sistema NWP HARMONIE: Introducción a la Computación de Altas

H+00 H+48

NWP

Paso de tiempo numérico

datos/3datos/3 datos/3

P3P2P1

tiempo computo ' tiempo secuencial

3

¿ ?

Depende del esquema numérico, en el caso IFS/HARMONIE: semi-Lagrangiano semi-implícito (SLSI)

datos

Conceptos iniciales!

!Introducción a la computación de Altas Prestaciones

Page 9: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Conceptos!

!Introducción a la computación de Altas Prestaciones

Arquitectura !de Von Neumman Ley de Moore

Page 10: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Conceptos!

!Introducción a la computación de Altas Prestaciones

Taxonomía de Flynn!!

• Una instrucción, un dato (SISD):!Computador secuencial que no explota el paralelismo en las instrucciones ni en flujos de datos. Ejemplos de arquitecturas SISD son las máquinas con uni-procesador o monoprocesador tradicionales como el PC o los antiguos mainframe. !

• Múltiples instrucciones, un dato (MISD):!Poco común debido al hecho de que la efectividad de los múltiples flujos de instrucciones suele precisar de múltiples flujos de datos. !

• Una instrucción, múltiples datos (SIMD):!Un computador que explota varios flujos de datos dentro de un único flujo de instrucciones para realizar operaciones que pueden ser paralelizadas de manera natural. Por ejemplo, un procesador vectorial. !

• Múltiples instrucciones, múltiples datos (MIMD):!Varios procesadores autónomos que ejecutan simultáneamente instrucciones diferentes sobre datos diferentes. Los sistemas distribuidos suelen clasificarse como arquitecturas MIMD; bien sea explotando un único espacio compartido de memoria, o uno distribuido.

Page 11: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Conceptos!

!Introducción a la computación de Altas Prestaciones

Lo más común en los Modelo Numéricos de Predicción del Tiempo, Calidad del Aire y Climatológicos.

Page 12: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Conceptos!

!Introducción a la computación de Altas Prestaciones

Ley de Amdahl!!La aceleración de un código se define por la fracción de código (P) que puede ser paralizado.

• Speedup: speedup =1

PN + S

P = 0 → no speedup P = 1 → speedup infinito (teoría)

Page 13: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Sp =Ts

Tp

Speedup y Eficiencia!

!Introducción a la computación de Altas Prestaciones

• Speedup:!! - p = # de procesadores. - Ts = tiempo de ejecución de un algoritmo en secuencial. - Tp = tiempo de ejecución de un algoritmo paralelo con p procesadores. - Sp = P (velocidad lineal: ideal) !!!• Parallel efficiency: Ep =

Sp

p=

Ts

pTp

Page 14: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Speedup y Eficiencia: Ec. calor!

!Introducción a la computación de Altas Prestaciones

Numero procesadores: 8

Page 15: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Arquitectura de memoria: Memoria Compartida!

!Introducción a la computación de Altas Prestaciones

CPU

CPU

CPUMEMORIACPU

UMA!(Uniform Memory Access)

NUMA!(Non-Uniform Memory Access)

CPUMEMORIA CPU

CPUMEMORIA CPU

CPUMEMORIA CPU

CPUMEMORIA CPU

Bus!interconexión!

Noreste, Anayet

Page 16: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Arquitectura de memoria: Memoria Distribuida!

!Introducción a la computación de Altas Prestaciones

Memoria CPU

Memoria CPU

Memoria CPU

Memoria CPU

network

Page 17: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Arquitectura de memoria: Memoria Distribuida-Compartida!

!Introducción a la computación de Altas Prestaciones

MemoriaCPU

CPU

GPU

GPU

MemoriaCPU

CPU

GPU

GPUMemoria

CPU

CPU

GPU

GPU

MemoriaCPU

CPU

GPU

GPU

MemoriaCPU

CPU

CPU

CPU

MemoriaCPU

CPU

CPU

CPUMemoria

CPU

CPU

CPU

CPU

MemoriaCPU

CPU

CPU

CPUnetwork

network

Page 18: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Paradigmas de Programación en Paralelo!

!Introducción a la computación de Altas Prestaciones

Programación en memoria compartida:!• Pthreads!• OpenMP!• CAF!

!Programación en memoria distribuida:!

• MPI!!Programación híbrida (distribuida + compartida):!

• MPI + OpenMP

Page 19: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!

• ¿ Por qué la Computación de Altas Prestaciones ?!!

• ¿ Cómo se puede analizar la calidad de un algoritmo ?!!

• ¿ Por qué el paradigma de Pase de Mensaje ?!!

• ¿ Por qué el paradigma de Memoria Compartida ?!!

• ¿ Tiene utilidad en los modelos meteorológicos ?

Cuestiones!

!Introducción a la computación de Altas Prestaciones

Page 20: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria compartida usando OpenMP!

• Application Program Interface (API) para para programación paralela en memoria compartida multi-threads.

!• El API soporta C/C++ y Fortran en una variedad de arquitectura.

!• El API se compone de tres componentes principales:

!•Directivas de compilación.

!•Runtime Library Routines.

!•Variables de entorno.

Page 21: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

OpenMP no es …!

• No es una paralización automática. !

• Usuario tiene que incluir las directivas para paralizar el código. !

• El compilador no ignora el uso de directivas. !

• No paraleliza fuera de los bucles. !

• No es un proyecto de investigación. !

• Los compiladores más eficientes son los comerciales. !

! !

Page 22: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

OpenMP si es ..!

• Programación paralela para memoria compartida multiplataforma. !

• OpenMP es portable: IBM, Intel,.. !

• OpenMP no es intrusivo !! !

Page 23: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Los componente de OpenMP !

• Directivas!!

• Variables de entorno!!

• Librerías en tiempo de ejecución!!!

!! !

OpenMP

Directivas LibreríasVariables entorno

• Variables privadas/públicas!!

• OS Threads

Page 24: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP !

• Las directivas son “comentarios” espaciales en el código. !

• Fortran: !$OMP !

• C/C++ : !pragma omp !

• Los comentarios especiales son interpretados por el compilar, siempre que se le indique que utilice la API de OpenMP.

!• Fortran:

!gfortran -fopenmp -o program.x program.f90

!¡ OpenMP no es intrusivo ! !gfortran -o program.x program.f90

!! !

Page 25: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (2)!

int main() { !! double a[1000],b[1000],c[1000]; int i; ! #pragma omp for ! for (i = 0; i< 1000; i++){ a[i] = b[i] + c[i]; } !!!}

Program Ejemplo1 Implicit none !real(8) :: a(1000),b(1000),c(1000) integer :: i !!$OMP PARALLEL DO ! do i=0,1000 a(i) = b(i) + c(i) end do !!$OMP END PARALLEL DO !end

C Fortran

Page 26: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (3)!

1 ) Regiones paralelas!!!

!$OMP PARALLEL cláusula1 cláusula2... Código paralelo !!$OMP END PARALLEL

Normas básicas!!1) Debe aparecer en la

misma rutina del programa.!

!2) Está permitido anidar

regiones paralelas.

Región serie

Región paralela

Thread 0

Thread 0 Thread 1Thread

Np

Page 27: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (4)!

Prácticas: Ejecuta programa hello_treads.f90

Cláusulas:!!

• Private (lista) • Shared (lista) • Default (Private | Shared | None ) • Firstprivate ( lista) • Reduction (operator:lista) • Copyin (lista) • If ( expresión lógica) • Num_threads (entero) !

Page 28: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (5)!

Región serie

Región paralela

Thread 0

Thread 0 Thread 1 Thread Np

Memoria Compartida

Memoria Compartida

a b

a ba b a b

Región serie

Región paralela

Thread 0

Thread 0 Thread 1 Thread Np

Memoria Compartida

Memoria Compartida

c d

c d

PRIVATE: !!$OMP PARALLEL PRIVATE(a,b)

SHARED: !!$OMP PARALLEL SHARED(c,d)

Page 29: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (5)!

DEFAULT (PRIVATE|SHARED|NONE): !!$OMP PARALLEL DEFAULT(PRIVATE) SHARED(a) Para declarar muchas variables de golpe. “None” implica

declararlas todas.

Región serie

Región paralela

Thread 0

Thread 0 Thread 1 Thread Np

Memoria Compartida

Memoria Compartida

b = 1a = 2

b = 1a = ?

b = 1a = ?

b = 1a = ?

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

Page 30: El sistema NWP HARMONIE: Introducción a la Computación de Altas

2) Bucles DO: !

!$OMP DO cláusula1 cláusula2... Código paralelo !!$OMP END DO cláusula de finalización

Región serie

Región paralela

Thread 0

Thread 0 Thread 1 Thread 3

i=1, 100 i=101, 200 i=201, 300

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (6)!

Nota: NOWAIT : existe una sincronización

implícita cuando finaliza elentorno paralelo. Esta directiva anula dicha sincronización, por lo que debe t e n e r s e c u i d a d o a l u s a r determinadas variables.

sincronizar

Page 31: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (6)!

REDUCTION (operador : lista): Muchas veces hay variables en memoria compartida que sólo

deben ser actualizadas por un único hilo cada vez. Hay dos opciones: – Pongo barreras en el momento de actualizar la variable (lo

veremos): esto afecta al rendimiento. – Creo una copia privada de la variable y la inicializo. Dejo que cada

hilo actualice su copia privada de la variable y al sincronizar los hilos actualizo el valor de la variable con los diferentes parciales.

IF (EXPRESIÓN LÓGICA): !$OMP PARALLEL IF (N > 1000) Ejecución condicional: la región sólo se ejecuta en paralelo si se

cumple la condición expuesta en el IF.

NUM_THREADS ( entero ): !$OMP PARALLEL IF (N > 1000) Fija el número de hilos que ejecutarán la región paralela. Prevalece

sobre el valor fijado en las variables de entorno.

Page 32: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Sincronización de hilos: !!$OMP MASTER / !$OMP END MASTER: sólo el hilo 0 (el master) ejecuta el código.

El resto NO esperan. [SINGLE con NOWAIT] !!$OMP CRITIAL / !$OMP END CRITICAL: asegura que sólo un hilo ejecuta una

acción en concreto (escribir fichero, leer de teclado). El resto espera a que el anterior termine para poder ejecutar ese fragmento de código.

!!$OMP BARRIER: debe existir para todos los hilos o para ninguno. Todos esperan

hasta que llegan a ese punto. Si sólo 1 tiene la barrera, se produce un deadlock. !!$OMP ATOMIC: asegura que sólo 1 hilo actualiza una variable compartida. Por

ejemplo (a = a +1). [Critical]

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (7)!

Page 33: El sistema NWP HARMONIE: Introducción a la Computación de Altas

3) Secciones secuenciales: !

!$OMP SINGLE cláusula1 cláusula2... Código secuencial !$OMP END SINGLE cláusula de finalización! !

1) Sólo ejecuta un hilo, el resto esperan a que termine ese hilo, a menos que

cerremos con un NOWAIT. !

2) No puede ejecutarse dentro de un bucle DO, ya que la carga de trabajo se ha repartido ya ANTES de llegar a la sentencia SINGLE.

!Introducción a la computación de Altas Prestaciones

Las directivas de OpenMP (8)!

Page 34: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Las variables de entrono de OpenMP (1) !

!Introducción a la computación de Altas Prestaciones

• OMP_NUM_THREADS: especifica el número de threads que van a ser usados dentro de la región paralelo. Este valor también se puede cambiar a través de una función de librería. !

export OMP_NUM_THREADS=2!setenv OMP_NUM_THREADS 4!set OMP_NUM_THREADS=4!!

• OMP_SCHUDULE: Indica el tipo de scheduling para for y parallel for!!

• OMP_DYNAMIC: Autoriza o desautoriza el ajuste dinámico del número de threads.!!

• OMP_NESTED: Autoriza o desautoriza el anidamiento. Por defecto no esta autorizado.

Page 35: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Librerías en tiempo de ejecución de OpenMP (1) !

!Introducción a la computación de Altas Prestaciones

• omp_set_num_threads: Fija el número de hilos simultáneos.!!

• omp_get_num_threads: Devuelve el número de hilos en ejecución.!!

• omp_get_max_threads: Devuelve el número máximo de hilos que lanzará nuestro programa en las zonas paralelas. Es muy útil para reservar memoria para cada hilo.!

!• omp_get_thread_num: Devuelve el número del thread dentro del equipo

(valor entre 0 y omp_get_num_threads()-1)!!

• omp_get_num_procs: Devuelve en número de procesadores de nuestro ordenador o disponibles (para sistemas virtuales).

Page 36: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Ejercicios OpenMP!

!Introducción a la computación de Altas Prestaciones

Ejercicios !!

• helloThreads!!

• pi! !

• Máquinas!!

• noreste!• ecgate!• crayx30!

Objetivo:!!

1) Analizar el código y distinguir los diferentes componentes de OpenMP.

!2) Variar el número de threads y analizar el speedup y la eficiencia

del cálculo del número pi dependiendo de la máquina.

Page 37: El sistema NWP HARMONIE: Introducción a la Computación de Altas

ecgate!!The hardware consists of: !• 8 compute nodes, each with 2 Intel Xeon E5-2680 (Sandy Bridge-EP, total of 16 cores 2.7 GHz,

128 GB RAM) and 2 x 900 GB SAS HDD. One of these nodes serves as a 'login' node. !• 4 I/O server nodes, each with 1 Intel Xeon E5-2680 (Sandy Bridge-EP, 8 cores 2.7 GHz, 64 GB

RAM) and 2 x 900 GB SAS HDD !• 8 DS3524 plus 16 EXP3524 storage systems providing about 170 TB of raw disk space

Ejercicios OpenMP!

!Introducción a la computación de Altas Prestaciones

Page 38: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Nota: Grano fino o grueso!

!Introducción a la computación de Altas Prestaciones

Las aplicaciones a menudo se clasifican según la frecuencia con que sus subtareas se sincronizan o comunican entre sí:!!

1) Grano Grueso:!!

1) si las tareas no deben comunicarse muchas veces por segundo. 2) se trata como procesos concurrentes que ejecutan en

monoprocesador com multiprogramación. 3) puede proporcionar en multiprocesador con pocos cambios.

!2) Grano fino: !

!1) si se comunican muchas veces por segundo. 2) aplicaciones altamente paralelas. 3) área muy especializada y fragmentada, con muchas propuestas

diferentes. !

3) vergonzosamente paralelo: !!

1) si nunca o casi nunca tiene que comunicarse. 2) Son las más fáciles de programar.

Page 39: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

Open MPI: !Open Source High Performance Computing

MPI ( Message Passing Interface)

Page 40: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

MPI ( Message Passing Interface) !

!• Paradigma de programación para computación paralela!

!!

• Objetivo: lograr la potabilidad a través de diferentes máquinas, de forma similar al de un lenguaje de programación que permita ejecutar, de forma transparente, aplicaciones sobre sistemas heterogéneos, sin que se pierda rendimiento.!

!• Implementaciones:!

• MPICH!• LAM!• CHIMP!• UNIFY!• MPI_FM!• ………

Page 41: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

MPI Standards !

• MPI-1(1994) !

• MPI-2(1997) !

• MPI-2.1(2008) !

• MPI-3 (2012) !

• Repositorio oficial MPI: http://www.mpi-forum.org !

• Información: http://www.mcs.anl.gov/mpi

Page 42: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

MPICH MVAPICH Open MPI Cray MPI Tianhe MPI Intel MPI IBM BG/Q MPI

IBM PE MPICH

IBM Platform SGI MPI Fujitsu

MPIMicrosoft

MPI

NB collectives ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 ✔ ✔

Neighborhood collectives ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15

RMA ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15

Shared memory ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15

Tools Interface ✔ ✔ ✔ (✔) Q4 ‘14 Q3 ‘15

Non-collective comm. create ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15 ✔

F08 Bindings ✔ ✔ ✔ Q4 ‘14 Q3 ‘15

New Datatypes ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15 ✔

Large Counts ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15

Matched Probe ✔ ✔ ✔ ✔ ✔ ✔ ✔ Q4 ‘14 Q3 ‘15 ✔

MPI-3

Espacios en blancos no se tiene información

Page 43: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

• Cuando usar MPI!!

• Si la potabilidad es necesaria.!• En el desarrollo de bibliotecas paralelas.!

• La interrelación de los datos es dinámica o irregular y no se ajusta

a un modelo de datos paralelos. MPI, y en general el esquema de pase de mensajes, facilitan la programación en estos casos.

!• Cuando NO usar MPI! • Si es posible usar HPF (High Performance Fortran) o Fortran 90

paralelo.

• Es posible usar una biblioteca de más alto nivel (la cual podría

estar escrita en MPI).

!!

Page 44: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!Programa con MPI

#include <mpi.h> #include <stdio.h> !int main(int argc, char ** argv) { int rank, size; ! MPI_Init(&argc, &argv); ! MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); printf("I am %d of %d\n", rank + 1, size); ! MPI_Finalize(); return 0;!

}

Basic requirements

for an MPI program

Page 45: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

• MPI se compone de 129 funciones aunque muchos programas pueden ser escritos solo con 6 funciones.!

!• Forma de ejecutar un programa con funciones MPI.

mpif90 -g -o ejecutable.x programa.f90 !mpirun -np 4 ./ejecutable.x

Page 46: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

Como escribir un programa usando MPI!

MPI Basic Send/Receive !

• Simple modelo de comunicación !!!!

!!!!

!• La aplicación necesita:

• Cómo compilar y ejecutarla • Cómo identificar los procesos • Cómo describiré los datos para el paso de mensaje

Process 0 Process 1

Send(data)Receive(data)

Page 47: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!

Las funciones de la librería MPI se pueden agrupar en los siguientes puntos:!

!• Información del entorno.!

!• Medición de tiempo. !

!• Comunicación punto a punto.!

!• Comunicaciones colectivas.!

!• Procesamiento por grupos.

!• Comunicaciones sin bloqueo.

!• Definiendo topología sobre los procesos.!

Page 48: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Información del entorno!

¿ Cuántos proceso hay ?!!!!!!!!!!!!¿ Quién soy yo ?!!!!!!!!!!!!!¿ En dónde estoy corriendo ?!

Page 49: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Medición de tiempo!

MPI_Wtime: devuelve un punto flotante que representa el número de segundos transcurridos a partir de cierto tiempo pasado, el cual se garantiza que no cambia durante la vida del proceso. Es responsabilidad del usuario hacer la conversión de segundos a otras unidades de tiempo: horas, minutos, etc. !!!!!MPI_Wtick: permite saber cuantos segundos hay entre tics sucesivos del reloj. Por ejemplo, si el reloj esta implementado en hardware como un contador que se incrementa cada milisegundo, entonces MPI_Wtick debe devolver 10-3. !

Page 50: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación punto a punto!

¿ A quién se les envía los datos ?!!!!!!!!!!!! !!!¿ Cómo hace el receptor p a r a i d e n t i fi c a r e l mensaje ?!

Page 51: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación punto a punto (2)!

!!¿ Qué es lo se envía ?!!!!!

Page 52: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación colectivas!

Pueden ser clasificadas en tres grupos: !!

• Sincronización. Barreras para sincronizar.!!

• Movimiento (transferencias) de datos. Operaciones para difundir, recolectar y esparcir.!

!• Cálculos colectivos. Operaciones para dicción global, tales como

suma, máximo, mínimo o cualquier función definida por el usuario.!

MemoriaCPU

CPU

CPU

CPU

MemoriaCPU

CPU

CPU

CPUMemoria

CPU

CPU

CPU

CPU

MemoriaCPU

CPU

CPU

CPU

networkbarrera

barrera

Page 53: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación colectivas (2)!

¿ Cómo mandar los datos ?!

Page 54: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación colectivas (3)!

A

B

D

C

B C D

A

A

A

A

Broadcast

Scatter

Gather

A

A

P0

P1

P2

P3

P0

P1

P2

P3

¿ Cómo mandar los datos ?!

Page 55: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación colectivas (4)!

¿ Cómo recuperar los datos de los !procesadores ?!

Page 56: El sistema NWP HARMONIE: Introducción a la Computación de Altas

!Introducción a la computación de Altas Prestaciones

MPI: Comunicación colectivas (4)!

P0

P1

P2

P3

P0

P1

P2

P3

A

B

D

C

A

B

D

C

f(ABCD)

f(A)

f(AB)

f(ABC)

f(ABCD)

Reduce

Scan

Page 57: El sistema NWP HARMONIE: Introducción a la Computación de Altas

Información en la WEB

▪ MPI standard : http://www.mpi-forum.org/docs/docs.html

▪ MPICH : http://www.mpich.org

▪ MPICH mailing list: [email protected]

▪ MPI Forum : http://www.mpi-forum.org/ !▪ Otras implementaciones MPI:

– MVAPICH (MPICH con InfiniBand) : http://mvapich.cse.ohio-state.edu/ – Intel MPI (MPICH derivative): http://software.intel.com/en-us/intel-

mpi-library/

– Microsoft MPI (MPICH derivative) – Open MPI : http://www.open-mpi.org/

!▪ Several MPI tutorials can be found on the web

!Introducción a la computación de Altas Prestaciones

Programación en memoria distribuida usando MPI!