moodle

24
Introducción a la Programación Paralela Lizandro Damian Solano Quinde, PhD Julio, 2013 Cuenca - Ecuador

Upload: lizandro-solano-quinde

Post on 14-Jul-2015

139 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Moodle

Introducción a la Programación Paralela

Lizandro Damian Solano Quinde, PhD

Julio, 2013

Cuenca - Ecuador

Page 2: Moodle

Estructura

• Perspectiva Histórica

• Programación Paralela

• GPGPU: General Purpose Computing on GPUs

• Mensaje Final

Page 3: Moodle

Evolución de los Procesadores (1)1971 – i4004

1992 – i80486

1995 - iPentium

2005 - iCore

+ Fabricación

+ Disenio A.C.

- Limitaciones

Page 4: Moodle

Evolución de los Procesadores (2)

• Ley de Moore [1975]: # de transistores en un chip se duplica cada 2 años– La capacidad de procesamiento se duplica cada 18 meses

[David House]

• Mejoras en las tecnicas de empaque y fabricación• Avances en el Disenio de la Arquitectura

– Prediccion de Saltos– Ejecucion Especulativa– Pipelining– Procesadores Super-Escalares– Incremento del Paralelismo a Nivel de Instrucciones (ILP)– Caches mas grandes

Page 5: Moodle

La Pared de Ladrillo - Brick Wall (1)

• Andrew Grove – Intel [2002]• El avance en la evolución de los procesadores “golpeo” una

pared de ladrillo (brick wall):– Power wall – Incremento de consumo de potencia dinámica y

estática– Parallelism wall – mas complejo incrementar ILP– Memory wall – la latencia de memoria es varios ordenes de

magnitud mas lento que la velocidad de los procesadores

• Obligo a un cambio de curso en la arquitectura de los procesadores– Procesadores Multi-Core– Procesadores Many-Core

Page 6: Moodle

La Pared de Ladrillo - Brick Wall (2)Brick Wall

Page 7: Moodle

La Pared de Consumo de Potencia (1)

Page 8: Moodle

La Pared de Consumo de Potencia (2)

Page 9: Moodle

La Pared de Consumo de Potencia (3)

• Andrew Grove [2002]:

– Consumo de Potencia se esta convirtiendo en un limitante

– Un incremento de 13% en performance resulta en un 70% en incremento de consumo de potencia

– Un decremento de 13% en performance resulta en un 50% decremento de consumo de potencia

• Es mas rentable tener varios cores en un procesador que un solo core mas rápido

Page 10: Moodle

No Free Lunch ?

• Durante décadas la industria del software incrementaba el rendimiento de aplicaciones aprovechando el avance de los procesadores– Aplicaciones con un solo thread (hilo)– Free Lunch

• Desde la aparición de los procesadores con múltiples cores, esto ya no es posible– La frecuencia de los cores ya no incrementa (2.5GHz)– Incrementa el Nro. de cores (2, 4, 6, 8, 16, >100)– Es necesario tener múltiples threads (>1 por thread)– No free lunch

Page 11: Moodle

Procesadores Multi-Core

• De acuerdo a la arquitectura interna, los procesadores podrian ser:

– SIMD (Single Instruction Multiple Data)

• Arquitecturas Vectoriales

• GPU (Graphics Processing Unit)

– MIMD (Multiple Instruction Multiple Data)

• Multi-Core Super Scalar Processor (ej. dual core)

Page 12: Moodle

Lenguajes de Programación Paralelos

• POSIX Threads (Pthreads)

• OpenMP (Open Multi-Processing)

• CUDA (Compute Unified Device Architecture)

• OpenCL (Open Compute Language)

Page 13: Moodle

POSIX Threads

• Thread (Hilo): es un conjunto independiente de instrucciones que es ejecutado de manera independiente

• Un programa puede tener múltiples threads• Implementa un modelo de programación MIMD• Todos los threads comparten un area de memoria del

proceso principal• Pthreads fue creado en un inicio para dar soporte a la

multiprogramación en sistemas operativos, no para programacion en dispositivos multi-core

• Con la aparicion de procesadores multi-core, cada threadpuede ser ejecutado por un core diferente (processoraffinity)

Page 14: Moodle

OpenMP (Open Multi-Processing)

• Es un modelo SIMD• Esta compuesto por un conjunto de directivas

(#PRAGMA) que indican al compilador que es un area a paralelizar

• Adicionalmente posee variables que permiten definir parámetros de la paralelizar (ej. el numero de threads a crear)

• El momento de la ejecucion, el runtime crea tantos threads como se haya especificado

• Pasa asociar threads a cores, se usa el mismo concepto de processor affinity

Page 15: Moodle

CUDA(Compute Unified Device Architecture)

• Estándar propietario de Nvidia

• Programación de Dispositivos Many-core(GPU)

• Es SIMT (Single Instruction Multiple Thread)– Variacion de SIMD

• Necesita miles de threads para obtener optimo rendimiento– Esconde la latencia de memoria, no la reduce

como en el caso de los CPUs

Page 16: Moodle

OpenCL (Open Compute Language)

• Estandar universal desarrollado por Khronos– Consorcio: Nvidia, Intel, AMD, Apple, entre otros

• Tiene una filosofia de programacion similar a CUDA

• Define unicamente el API, la implementacionqueda para los fabricantes de HW– Problema: Interoperabilidad entre plataformas no es

posible hasta este momento

• No totalmente optimizado para las diferentes plataformas

Page 17: Moodle

GPGPU: General Purpose Computing on GPUs

• En 2001 los aceleradores graficos se volvieron completamente programbles

• A la par el hardware de los aceleradores gráficos se volvió de propósito general– Se convirtieron en GPUs

• La comunidad cientifica se dio cuenta del potencial para programacion de los GPUs– Solo había OpenGL (para programación de gráficos)– Los primeros programas cientificos fueron escritos en OpenGL

• Nvidia decide desarrollar CUDA [ ~2007 ]– Lenguaje de programacion para GPUs, de proposito general

• Nvidia construye GPUs sin el interface de video, para proposito general

Page 18: Moodle

CPUs vs GPUs

• GPUs usan mas transistores para procesamiento

• CPU usan una gran cantidad de transistores para control y caches

Page 19: Moodle

Arquitectura del Sistema

Page 20: Moodle

Arquitectura de un GPU de Nvidia

Page 21: Moodle

Parametros a considerar cuando se programan Procesadores Many-Core

• El runtime de CUDA genera miles (o millones) de threads

• Los threads son agrupados en grupos de 32 threadsllamados WARPs

• Ocupacion de HW– Como usar 500 cores ?

• Acceso a memoria– Evitar conflictos en los bancos– Optimizar el uso del bandwidth de memoria: coalesced

access, acceso consolidado de los threads

• Thread switching: latencia a memoria se esconde en lugar de reducirla – Intercalar Bloques de threads

Page 22: Moodle

Take Home Message (Mensaje Final)

• La computación paralela esta en nuestros escritorios, e incluso en nuestras manos (ej. smart phones, etc)

• Estudiantes: aprender programacion paralela

• Profesores (Universidades): Incorporar cursos de programación paralela en los curriculos de las carreras

Page 23: Moodle

Algunos lugares de interes

• www.nvidia.com

• www.intel.com/multicore

• www.khronos.com