moodle
TRANSCRIPT
![Page 1: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/1.jpg)
Introducción a la Programación Paralela
Lizandro Damian Solano Quinde, PhD
Julio, 2013
Cuenca - Ecuador
![Page 2: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/2.jpg)
Estructura
• Perspectiva Histórica
• Programación Paralela
• GPGPU: General Purpose Computing on GPUs
• Mensaje Final
![Page 3: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/3.jpg)
Evolución de los Procesadores (1)1971 – i4004
1992 – i80486
1995 - iPentium
2005 - iCore
+ Fabricación
+ Disenio A.C.
- Limitaciones
![Page 4: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/6.jpg)
La Pared de Ladrillo - Brick Wall (2)Brick Wall
![Page 7: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/7.jpg)
La Pared de Consumo de Potencia (1)
![Page 8: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/8.jpg)
La Pared de Consumo de Potencia (2)
![Page 9: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/12.jpg)
Lenguajes de Programación Paralelos
• POSIX Threads (Pthreads)
• OpenMP (Open Multi-Processing)
• CUDA (Compute Unified Device Architecture)
• OpenCL (Open Compute Language)
![Page 13: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/18.jpg)
CPUs vs GPUs
• GPUs usan mas transistores para procesamiento
• CPU usan una gran cantidad de transistores para control y caches
![Page 19: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/19.jpg)
Arquitectura del Sistema
![Page 20: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/20.jpg)
Arquitectura de un GPU de Nvidia
![Page 21: Moodle](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022051516/55a47f881a28abd43a8b460e/html5/thumbnails/23.jpg)
Algunos lugares de interes
• www.nvidia.com
• www.intel.com/multicore
• www.khronos.com