26
INTRODUCCION A LA COMPUTACION PARALELA Unai Lopez [email protected] 12 Nov 2014 Intelligent Systems Group University of the Basque Country UPV/EHU

Introducción a la Computación Paralela

Embed Size (px)

DESCRIPTION

Charla realizada en el Master de Sistemas Informáticos Avanzados, UPV/EHU, 12/11/2014. Presentación del hardware utilizado en la actualidad para cómputo masivo en clusters, librerias para programación HPC y varios retos en investigación en el área del paralelismo.

Citation preview

Page 1: Introducción a la Computación Paralela

INTRODUCCION A LA

COMPUTACION PARALELAUnai Lopez

[email protected] Nov 2014

Intelligent Systems Group

University of the Basque Country UPV/EHU

Page 2: Introducción a la Computación Paralela

Motivación

• Sobre la computación paralela:

• Qué: Usar sistemas paralelos para acelerar computo

• Cuando: Tiempos de cómputo excesivos

• Por qué: Todos los sistemas actuales son paralelos

2

Page 3: Introducción a la Computación Paralela

Índice

a. Hardware

b. Entornos de desarrollo

c. Retos en investigación

3

Page 4: Introducción a la Computación Paralela

Hardware• Nodo de cómputo:

• Acelerador:• Coprocesador con arquitectura distinta a un multicore• Capacidad de ejecutar ciertas tareas mas eficientemente• Incluye un espacio de memoria propia

• Multi-core + Acelerador: Sistema Heterogéneo

ProcesadorMulticore

MemoriaPrincipal

Acelerador

4

Page 5: Introducción a la Computación Paralela

Multi-cores• Actualmente:

• Hasta 16 cores• Hasta 4 Ghz

• Funcionalidades:• Hyperthreading• Predictores de salto,…

• El “todoterreno” de la computación paralela

• AMD Opteron Series: ~ 250 GFLOPS

5

Page 6: Introducción a la Computación Paralela

GPUs (Graphics Processing Units)

• Hardware diseñado para procesamiento de imágenes• Compuesto (entre otros) por:

• Cientos de cores SIMD • Varios GBs de memoria dedicada

• Las GPUs proporcionan:• Capacidad de manejar miles de hilos activos• Cambio de contexto ligero entre hilos

• NVIDIA Titan Black: 1.8 TFLOP/s

6

Page 7: Introducción a la Computación Paralela

Intel Xeon Phi

• Acelerador lanzado en 2012

• 60 Cores x86 @ 1 Ghz• 16 GB Memoria dedicada

• El Phi proporciona frente a las GPUs:• Cores más enfocados al cómputo de propósito general• Mayor facilidad de programación

• Xeon Phi 5110P: 1 TFLOP/s

7

Page 8: Introducción a la Computación Paralela

Hardware

• El rendimiento dependerá de la naturaleza de la aplicación

Multi-core•16 cores

•250 GFLOP/s

Many-core•61 cores

•1 TFLOP/s

GPU•2880 cores

•1.8 TFLOP/s

Flujo de control complejo Paralelismo embarazosoFlujo de control complejo Paralelismo embarazoso

8

Page 9: Introducción a la Computación Paralela

Chips Heterogéneos• Distintos tipos de cores en un mismo chip (P.e. AMD Fusion)

• Posibilidad de ofrecer un espacio unificado de memoria

• Nuevo «jugador»: ARM• Mercados más conocidos: smartphones, sist. embebidos• Actual CPU Cortex A-57 de 64 Bits• Línea de GPUs MALI (compatible con GPGPU)

• Inicialmente enfocados al bajo consumo, ahora en supercomputación: Mont Blanc, HP Moonshot

9

Page 10: Introducción a la Computación Paralela

• La elección dependerá de:• El estado del arte• Complejidad de la aplicación

Entornos de desarrollo

LibreríasAnotaciónde código

Frameworks paraaceleradores

Mayor abstracción Mayor control

10

Page 11: Introducción a la Computación Paralela

Librerías• Implementaciones de funciones populares• Software libre (p.e. GSL) y Software privativo (p.e. MKL)

• Ejemplos:• BLAS

• Rutinas algebraicas (p.e. multiplicación de matrices)• Intel MKL, CuBLAS,…

• FFT• Usada en física computacional, procesado de señal…• FFTw, CuFFT, …

11

Page 12: Introducción a la Computación Paralela

Anotación de código• Anotar código serie: añadir semanticas de paralelismo• OpenMP (multicores) y OpenACC (aceleradores)• Ejemplo:

• Cuando no es necesario máximo control hardware

for(i = 0; i < n; i++)c[i] = a[i] + b[i]

#pragma acc kernels copyin(a[0:n],b[0:n]), copyout(c[0:n])

#pragma omp parallel for

12

Page 13: Introducción a la Computación Paralela

Frameworks para Aceleradores• Escribir el código que ejecutará el acelerador• CUDA (GPUs NVIDIA) y OpenCL (GPUs y Xeon Phi)

• Implica mezclar dos codigos en un mismo programa:

• Máximo control sobre el hardware• Mayor complejidad de uso y depuración

Código acelerador: Implementación del problema

Código Host:Gestión de memoria y código acelerador

13

Page 14: Introducción a la Computación Paralela

Caso de uso: KDE• Kernel Density Estimation• Estimar la función de densidad de una población

• Nuestro escenario: Climatología• Nuestro reto: grandes volumenes de datos

14

Histograma: KDE:

Page 15: Introducción a la Computación Paralela

Caso de uso: KDE• Procedimiento para su paralelización:

1)Buscar en el estado del arteQué dice Google?

1)Analizar el programaQué dice el profiler?

1)Hacer una reestructuración algoritmicaEncontrar cómo hacer el computo de forma paralelizable

1)Aplicar técnicas de paralelismoImplementar anotaciones OpenMP

15

Page 16: Introducción a la Computación Paralela

Retos en investigación

1) Eficiencia computacional

2) Grandes datasets

3) Eficiencia energética

16

Page 17: Introducción a la Computación Paralela

Reto 1: Eficiencia computacional• Aprovechar eficazmente el hardware disponible• A pesar de la enorme capacidad de estas máquinas, el

hardware no está usado al 100%• En supercomputadores actuales:

• Nuevas arquitecturas: • Nuevos paradigmas de programación• Nuevas herramientas de desarrollo

• En muchos casos no se utilizan CPU + Acelerador simultáneamente

17

Page 18: Introducción a la Computación Paralela

Reto 1: Eficiencia computacional• Top500: Los 500 supercomputadores más potentes• Se publica en Junio y Noviembre

18

Page 19: Introducción a la Computación Paralela

Reto 2: Grandes datasets• Procesar eficazmente grandes volumenes de datos

• Actualidad: cada vez se genera más información

• Aplicaciones de análisis de datos presentan• Poco reuso de datos local• Poco reuso de datos temporal

• Dificil de explotar el rendimiento HPC• Muchas dependencias de datos• Patrones de acceso irregular a memoria

19

Page 20: Introducción a la Computación Paralela

Reto 2: Grandes datasets• Graph500: Análogo a Top500• Eficiencia procesando de grandes volumenes de datos

20

Page 21: Introducción a la Computación Paralela

Reto 3: Eficiencia energética• Minimizar el consumo manteniendo el rendimiento• El incremento en rendimiento (FLOPS) ha implicado

• Mayor consumo eléctrico • Mayores emisiones de calor

• Aprovechar el hardware eficientemente: un acelerador bien aprovechado resulta en relaciones coste / rendimiento y consumo / rendimiento muy favorables

• Utilización de muchos nodos de bajo consumo • IBM BlueGene: Power (predominantes en el Green500)

• Intel: procesadores tipo Atom (enfocados a movilidad)

• ARM: Tecnología diseñada para sistemas empotrados y móviles

21

Page 22: Introducción a la Computación Paralela

Reto 3: Eficiencia energética• Green500: Derivada de Top500

• Green Graph500: Derivada de Graph500

22

Page 23: Introducción a la Computación Paralela

Conclusiones• Diversidad hardware

• Variadas herramientas de desarrollo

• Diferentes retos en investigación

23

Page 24: Introducción a la Computación Paralela

Bibliografía• Unai Lopez-Novoa et al. A Survey of Performance Modeling and

Simulation Techniques for Accelerator-based Computing IEEE Transactions on Parallel and Distributed Computing, (2014)

• Unai Lopez-Novoa et al. Multi-objective environmental model evaluation by means of multidimensional kernel density estimators: Efficient and multi-core implementations. Environmental Modelling & Software, (2014)

• Jeffers, James, and James Reinders. Intel Xeon Phi coprocessor high performance programming. Newnes (2013)

• Hyesoon Kim, Richard W. Vuduc, Sara S. Baghsorkhi, JeeWhan Choi, Wen-mei W. Hwu: Performance Analysis and Tuning for General Purpose Graphics Processing Units (GPGPU). Synthesis Lectures on Computer Architecture, Morgan & Claypool Publishers (2012)

• Kirk, D. B., & Wen-mei, W. H. Programming massively parallel processors: a hands-on approach. Morgan Kaufmann (2010).

24

Page 25: Introducción a la Computación Paralela

Sitios Web relacionados

• http://www.top500.org

• http://www.green500.org

• http://www.graph500.org

• http://www.openacc-standard.org

• http://www.gpgpu.org

• http://www.hgpu.org

• http://www.hpcwire.com

• https://developer.nvidia.com/cuda-tools-ecosystem

• http://developer.amd.com/resources/heterogeneous-

computing/opencl-zone/

25

Page 26: Introducción a la Computación Paralela

INTRODUCCION A LA

COMPUTACION PARALELAUnai Lopez

[email protected] Nov 2014

Intelligent Systems Group

University of the Basque Country UPV/EHU