SlideShare una empresa de Scribd logo
Introducción a la Programación
Paralela
Lizandro Damian Solano Quinde, PhD
Julio, 2013
Cuenca - Ecuador
Estructura
• Perspectiva Histórica
• Programación Paralela
• GPGPU: General Purpose Computing on GPUs
• Mensaje Final
Evolución de los Procesadores (1)
1971 – i4004
1992 – i80486
1995 - iPentium
2005 - iCore
+ Fabricación
+ Disenio A.C.
- Limitaciones
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
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
La Pared de Ladrillo - Brick Wall (2)
Brick Wall
La Pared de Consumo de Potencia (1)
La Pared de Consumo de Potencia (2)
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
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
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)
Lenguajes de Programación Paralelos
• POSIX Threads (Pthreads)
• OpenMP (Open Multi-Processing)
• CUDA (Compute Unified Device Architecture)
• OpenCL (Open Compute Language)
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 thread
puede ser ejecutado por un core diferente (processor
affinity)
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
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
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 implementacion
queda para los fabricantes de HW
– Problema: Interoperabilidad entre plataformas no es
posible hasta este momento
• No totalmente optimizado para las diferentes
plataformas
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
CPUs vs GPUs
• GPUs usan mas transistores para procesamiento
• CPU usan una gran cantidad de transistores para
control y caches
Arquitectura del Sistema
Arquitectura de un GPU de Nvidia
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 threads
llamados 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
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
Algunos lugares de interes
• www.nvidia.com
• www.intel.com/multicore
• www.khronos.com
Mas info
• lsolano@ucuenca.edu.ec

Más contenido relacionado

PPTX
PDF
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
PPTX
Powerpoint10 mchiquero
PDF
Computación paralela con gp us cuda
PPTX
Procesadores intel yessenia
PPTX
Procesadores intel yessenia
PPTX
Procesador
DOC
Sin título 1
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Powerpoint10 mchiquero
Computación paralela con gp us cuda
Procesadores intel yessenia
Procesadores intel yessenia
Procesador
Sin título 1

La actualidad más candente (20)

PDF
Intel y adm
DOCX
Multinúcleos
ODT
Arquitectura del computador
DOCX
Procesadores
PPTX
Informatica exposici
DOCX
CARACTERISTICA DE LA COMPUTADORA Y TIPO DE MINIPROCESADORES
PPTX
Megahertz de los procesadores
PPTX
El Procesador
PPTX
Tecnologia hyper y multinucleo
PPTX
PPTX
Microsucc jorge gomez
PPT
El microprocesador
PPTX
Grupo 8 informatica exposici (1)
PPTX
Intel CORE 2 DUO
PPTX
Fernando isaiasmagañacordova procesador
Intel y adm
Multinúcleos
Arquitectura del computador
Procesadores
Informatica exposici
CARACTERISTICA DE LA COMPUTADORA Y TIPO DE MINIPROCESADORES
Megahertz de los procesadores
El Procesador
Tecnologia hyper y multinucleo
Microsucc jorge gomez
El microprocesador
Grupo 8 informatica exposici (1)
Intel CORE 2 DUO
Fernando isaiasmagañacordova procesador
Publicidad

Destacado (6)

PPTX
CUADRO DE COMANDOS
PPT
Thread
PPT
Planificacion
PDF
GUIA 1 HILOS Y PROCESOS
PPTX
PThreads Vs Win32 Threads
PDF
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
CUADRO DE COMANDOS
Thread
Planificacion
GUIA 1 HILOS Y PROCESOS
PThreads Vs Win32 Threads
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Publicidad

Similar a Moodle (20)

PPTX
Programación Paralela - Conceptos y diseño de sistemas distribuidos
PDF
arquitecturas-SISD%SIMD%MISD%MIMD
PPTX
Arquitectura del computador trabajo finalizado
PPTX
PPTX
Equipo 2 gpus
PPTX
Hardware y software del computador
PPTX
Arquitectura de las placas madre de un computador .pptx
PDF
Tema 1 multiprocesadores
PDF
Articulo de cuda
PPTX
SEMANA01a-Arquitectura-de-Computadoras.pptx
DOCX
Arquitecturas de Cómputo
PPT
Evolución Histórica de Sistemas de Procesamiento
PDF
Documental de Arquitecturas Avanzadas (Computación)
PDF
Tema 3. Arquitectura y diseño de seguridad
PPTX
Software libre y modelos de programación en la investigación con supercomputa...
DOCX
Servicio cliente servidor
PPS
GPUs para Científicos
PDF
Cesnavarra 2009-boletín 7
Programación Paralela - Conceptos y diseño de sistemas distribuidos
arquitecturas-SISD%SIMD%MISD%MIMD
Arquitectura del computador trabajo finalizado
Equipo 2 gpus
Hardware y software del computador
Arquitectura de las placas madre de un computador .pptx
Tema 1 multiprocesadores
Articulo de cuda
SEMANA01a-Arquitectura-de-Computadoras.pptx
Arquitecturas de Cómputo
Evolución Histórica de Sistemas de Procesamiento
Documental de Arquitecturas Avanzadas (Computación)
Tema 3. Arquitectura y diseño de seguridad
Software libre y modelos de programación en la investigación con supercomputa...
Servicio cliente servidor
GPUs para Científicos
Cesnavarra 2009-boletín 7

Moodle

  • 1. Introducción a la Programación Paralela Lizandro Damian Solano Quinde, PhD Julio, 2013 Cuenca - Ecuador
  • 2. Estructura • Perspectiva Histórica • Programación Paralela • GPGPU: General Purpose Computing on GPUs • Mensaje Final
  • 3. Evolución de los Procesadores (1) 1971 – i4004 1992 – i80486 1995 - iPentium 2005 - iCore + Fabricación + Disenio A.C. - Limitaciones
  • 4. 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
  • 5. 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
  • 6. La Pared de Ladrillo - Brick Wall (2) Brick Wall
  • 7. La Pared de Consumo de Potencia (1)
  • 8. La Pared de Consumo de Potencia (2)
  • 9. 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
  • 10. 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
  • 11. 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)
  • 12. Lenguajes de Programación Paralelos • POSIX Threads (Pthreads) • OpenMP (Open Multi-Processing) • CUDA (Compute Unified Device Architecture) • OpenCL (Open Compute Language)
  • 13. 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 thread puede ser ejecutado por un core diferente (processor affinity)
  • 14. 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
  • 15. 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
  • 16. 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 implementacion queda para los fabricantes de HW – Problema: Interoperabilidad entre plataformas no es posible hasta este momento • No totalmente optimizado para las diferentes plataformas
  • 17. 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
  • 18. CPUs vs GPUs • GPUs usan mas transistores para procesamiento • CPU usan una gran cantidad de transistores para control y caches
  • 20. Arquitectura de un GPU de Nvidia
  • 21. 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 threads llamados 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
  • 22. 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
  • 23. Algunos lugares de interes • www.nvidia.com • www.intel.com/multicore • www.khronos.com