Utilización de la programación paralela en...

49
Utilización de la programación paralela en procesadores gráficos para el cálculo científico. EMNO 2013

Transcript of Utilización de la programación paralela en...

Page 1: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Utilización de la programación paralela en procesadores gráficos para el cálculo científico.

EMNO 2013

Page 2: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Rolando E. Rodríguez Fernández

Medicina Computacional, Instituto de Nefrología. y Facultad de Física, Universidad de la Habana.

[email protected]

Page 3: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Medicina Computacional que cosa es eso ?

La Medicina Computacional es un campo de aplicaciones científicas, definido como la aplicación de las ciencias naturales y exactas a la medicina, utilizando como puente los modelos computacionales que han servido de manera clásica para explicar en la naturaleza y la sociedad, los fenómenos químicos, físicos, biológicos, matemáticos, psicológicos y hasta económicos y sociales. La Medicina Computacional utiliza a la Clínica y la Epidemiología como fundamentos esenciales para tener al paciente en la perspectiva directa de trabajo. La versión de la Bioinformática en el contexto médico …

Page 4: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

J. Endocrinol. Aug 2012

Page 5: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

La enfermedad renal poliquística una condición genética producida por el mal funcionamiento de un sistema de señales mediado de manera primaria por un canal de calcio

Page 6: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

La enfermedad renal poliquística mecanismos involucrados Ca, cAMP, TSC2, MAP kinasas (regulación primaria por receptores de GABA y canales de Ca L P y Q)

EGFR inh

Page 7: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema
Page 8: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema
Page 9: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema
Page 10: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Simulación en la Membrana Celular Receptor de GABA, DM en solución salina isotónica [1 226 413 átomos]

Page 11: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Un problema grande Cálculo del movimiento y la energía en un sistema molecular (Dinámica molecular)

E total = E enlazante + E no-enlazante E enlazante = E enlace + E tangular + E tdihedrica E no-enlazante = E electrostatica + E van der Waals

Poisson’s Eq

Page 12: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Descomposición de dominio: Cada átomo se puede calcular por separado Descomposición funcional: Lista de átomos enlazados Interacciones enlazantes Energía vibracional Energía rotacional Lista de átomos vecinos Generación del enrejado Interacciones no enlazantes Potencial Electrostático Potencial de van der Waals Puentes de Hidrógeno Posición y velocidad Conservación de la Energía Parte no Paralela (serial): Cálculo de la energía total del sistema Temperatura y Volumen

Un problema grande Cálculo del movimiento y la energía en un sistema molecular (Dinámica molecular)

Page 13: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema
Page 14: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Superficie de interacción en el sitio activo del receptor

Topología de la interacción

Un problema Enorme La simulación del acoplamiento molecular buscando posibles ligandos

Page 15: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Enrejado para el cálculo de energía El experimento !!

(228 348 102 Compuestos)

Un problema Enorme La simulación del acoplamiento molecular buscando posibles ligandos

Page 16: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

135

1193

143

Page 17: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Existe una demanda continua de potencia de cálculo en las computadoras siempre mayor que la que encontramos disponible. Desde el principio de la existencia de las computadoras hemos aprendido a dividir el problema en partes que deben ser ejecutadas en varios sistemas de computación y luego combinadas para obtener el resultado final. Esta estrategia se conoce como programación paralela o en paralelo. Gill (1958) “Parallel Programming”, The computer Journal, Vol 1, April, pp 12-10.

La programación en paralelo es un concepto bastante antiguo

Page 18: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Nicholas Metropolis formuló por primera vez el dilema eterno en el que ponemos a nuestros jefes .. “Esta máquina (la ENIAC) no es suficiente potente para resolver nuestros problemas” Y así obtuvo el dinero para armar una mas potente (MANIAC) que podía hasta jugar ajedrez .. En la MANIAC hizo el programa con el que George Gamow elucidó el código genético, que publicaron juntos en 1954

1943 1951

Hace falta un sistema computacional grande Vamos a construir un clúster de computadoras

Page 19: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Hace falta un sistema computacional grande La evolución de los sistemas distribuidos hoy nos podemos construir el clúster en el laboratorio .. antes no ..

2000s

Page 20: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema
Page 21: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistema de Cálculo Científico 152 CPUs, 4352 GPUs (9.8 TFlops), 380GB RAM, 80+ TB HDD

3 unidades de cálculo

24 CPUs (2x Opteron 12 core), 64GB RAM, 6TB HDD

48 CPUs (4x Opteron 12 core), 128 GB RAM, 6TB HDD

24 CPUs (2x Opteron 12 core), 64GB RAM 1024 GPUs (2x NVIDIA M2075, 12GB GDDR6, 2TFlops) 3TB UHSHDD

4 estaciones gráficas 3D

8 CPUs (Opteron 8 core), 16GB RAM, 1TB HDD, 256 GPUs (Nvidia Quadro 4000, 2GB GDDR5, 1 TFlop)

6 estaciones gráficas

4 CPUs (Opteron 4 core), 8GB RAM, 1TB HDD, 192 GPUs (Nvidia GTX, 1GB GDDR5, 0.4 TFlop)

7 u de control 2 CPUs (Atom 2 core), 4GB RAM, no HDD, vSphere

1 unidad SAN 1x Promise 32TB dual iSCSI SAN

Page 22: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistema de cálculo y procesamiento gráfico la tendencia actual es la arquitectura híbrida

Page 23: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Programación en sistemas ccNUMA 1. Hasta 16 núcleos 2. Registros multipropósito en los núcleos 3. Interfaz rápida de los 16 núcleos con su

memoria. 4. 64x vector pipeline, una instrucción se

puede ejecutar simultáneamente en los 64 registros multipropósito de cada núcleo (SIMD)

Multicomputadora de paso de mensajes y memoria compartida (ccNUMA)

Sistemas computacionales las arquitecturas actuales mas comunes

Page 24: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistemas computacionales La evolución de los procesadores gráficos ¨independientes¨ (la línea de desarrollo de nVidia)

1995 2000 2005 2010

RIVA 128 3M trans

GeForce® 256 23M trans

GeForce FX 125M trans

GeForce 8800 681M trans

GeForce 3 60M trans

“Fermi” 3B trans

2012

“Kepler” 7B trans

Page 25: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistemas computacionales Los procesadores gráficos, el camino (pipeline) de los gráficos

Page 26: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Raster

Vertex

Pixel

Blend

Rast

er

Vertex Pixel 0

Blen

d

Pixel 1

Pixel 2

Pixel 3

Vrtx 0 Vr

tx 2

Vrtx

1

Sistemas computacionales La evolución de los procesadores gráficos

Page 27: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

ALU

Control

ALU

Control

ALU

Control

ALU

Control

ALU

Control

ALU

Control

ALU ALU ALU

Control

ALU ALU ALU

Sistemas computacionales La evolución de los procesadores gráficos

Page 28: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistemas computacionales Los procesadores gráficos son bastante baratos

Page 29: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

0.339 30 137.4

0.703 30 66.3

Sistemas computacionales AMD y nVidia tenían hasta ahora rendimientos similares (ej. Cálculo del orbital molecular del C60)

Page 30: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistemas computacionales La evolución de los procesadores gráficos, un clúster dentro del chip (nVidia Kepler K110 GF)

Page 31: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Sistemas computacionales La evolución de los procesadores gráficos, el multiprocesador de ¨streaming¨

Page 32: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

/* * Copyright 2003-2012 NVIDIA Corporation. All rights reserved. * Modified by Rolando, [email protected] */ #include <cuda.h> #include <stdio.h> __global__ void add( int a, int b, int *c ) { *c = a + b; } int main( void ) { int c; int *dev_c; cudaMalloc( (void**)&dev_c, sizeof(int) ); add <<<1,1>>> ( 2, 7, dev_c ); cudaMemcpy( &c, dev_c, sizeof( int ),cudaMemcpyDeviceToHost ); printf( "2 + 7 = %d\n", c ); cudaFree( dev_c ); return 0; }

Sistemas computacionales un programa muy simple que si hace algo

Page 33: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Cada kernel de CUDA es ejecutado por un arreglo de hilos

- Cada hilo corre el mismo código (SIMD) - Cada hilo tiene un ID que se puede usar para calcular las direcciones de

memoria y realizar decisiones de control

7 6 5 4 3 2 1 0

… float x = input[threadID]; float y = func(x); output[threadID] = y; …

threadID

Sistemas computacionales Vamos a programar un procesador gráfico de nVidia con CUDA

Page 34: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

El arreglo de hilos se distribuye en bloques - Los hilos dentro del bloque cooperan a través de memoria compartida, operaciones atómicas y sincronización de barrera

- Los hilos de bloques diferentes no pueden cooperar entre si.

… float x = input[threadID]; float y = func(x); output[threadID] = y; …

threadID

Thread Block 0

… … float x = input[threadID]; float y = func(x); output[threadID] = y; …

Thread Block 1

… float x = input[threadID]; float y = func(x); output[threadID] = y; …

Thread Block N - 1 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

Sistemas computacionales Vamos a programar un procesador gráfico de nVidia con CUDA

Page 35: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Cada instancia tiene un ID

- Block ID: 1D, 2D y ahora hasta 3D - Thread ID: 1D, 2D o 3D

Host

Kernel 1

Kernel 2

Device

Grid 1

Block (0, 0)

Block (1, 0)

Block (0, 1)

Block (1, 1)

Grid 2

Block (1, 1)

Thread (0,1,0)

Thread (1,1,0)

Thread (2,1,0)

Thread (3,1,0)

Thread (0,0,0)

Thread (1,0,0)

Thread (2,0,0)

Thread (3,0,0)

(0,0,1) (1,0,1) (2,0,1) (3,0,1)

Sistemas computacionales Vamos a programar un procesador gráfico de nVidia con CUDA

Page 36: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Grid

Memoria Global

Bloque (0, 0)

Memoria Compartida

Hilo (0, 0)

Registros

Hilo (1, 0)

Registros

Bloque (1, 0)

Memoria Compartida

Hilo (0, 0)

Registros

Hilo (1, 0)

Registros

Host

Memoria de Constantes

Tipos de memoria

Sistemas computacionales Vamos a programar un procesador gráfico de nVidia con CUDA

Page 37: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Mi algoritmo puede ser paralelizable ? Bueno yo no se, al final de todo es su algoritmo Puedo programar mi problema en paralelo ? Generalmente si ... Los métodos numéricos SI son paralelizables ! Se están paralelizando para GPU la mayoría de los paquetes de cálculo numérico.

Sistemas computacionales Vamos a programar en paralelo

Page 38: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto www.netlib.org/utk/people/JackDongarra/la-sw.html

Page 39: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto

Page 40: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto

Page 41: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto

Page 42: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto

Page 43: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto

Page 44: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto

Page 45: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Bibliotecas numéricas en el GPU un buen comienzo para su proyecto Factorización de Cholesky utilizando MAGMA

Page 46: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Conclusiones o algo parecido • Los procesadores gráficos son una buena alternativa a los clústeres de

computadoras, en prestaciones y coste. • El código para los procesadores gráficos no es igual a los que se utilizan

en los clústeres, pero no es difícil de portar una vez que ya se ha paralelizado.

• Existen numerosas bibliotecas numéricas disponibles para los procesadores gráficos que sustituyen directamente las funciones anteriormente existentes.

• El incremento de la velocidad de ejecución es siempre mas del doble sin mucho esfuerzo y puede llegar a miles de veces.

Page 47: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

En todo el mundo .. Hay mas de 200 universidades que enseñan Programación Gráfica, Mas de 20 000 artículos en la literatura, mas de 60 000 desarrolladores

Page 48: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Mejoramiento de la conectividad ETECSA/CUBADATA, Empalme FO hasta Panorama

Page 49: Utilización de la programación paralela en …lya.fciencias.unam.mx/gfgf/cubamex2013/miercoles/rolando.pdf · Parte no Paralela (serial): Cálculo de la energía total del sistema

Muchas Gracias