SlideShare una empresa de Scribd logo
1 de 24
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

La actualidad más candente (20)

Intel y adm
Intel y admIntel y adm
Intel y adm
 
Multinúcleos
MultinúcleosMultinúcleos
Multinúcleos
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
Procesadores
ProcesadoresProcesadores
Procesadores
 
Informatica exposici
Informatica exposiciInformatica exposici
Informatica exposici
 
Grupo 8
Grupo 8Grupo 8
Grupo 8
 
CARACTERISTICA DE LA COMPUTADORA Y TIPO DE MINIPROCESADORES
CARACTERISTICA DE LA COMPUTADORA Y TIPO DE MINIPROCESADORESCARACTERISTICA DE LA COMPUTADORA Y TIPO DE MINIPROCESADORES
CARACTERISTICA DE LA COMPUTADORA Y TIPO DE MINIPROCESADORES
 
El procesador
El procesadorEl procesador
El procesador
 
Megahertz de los procesadores
Megahertz de los procesadoresMegahertz de los procesadores
Megahertz de los procesadores
 
El Procesador
El Procesador El Procesador
El Procesador
 
Tecnologia hyper y multinucleo
Tecnologia hyper y multinucleoTecnologia hyper y multinucleo
Tecnologia hyper y multinucleo
 
GPU
GPUGPU
GPU
 
Microsucc jorge gomez
Microsucc jorge gomezMicrosucc jorge gomez
Microsucc jorge gomez
 
El microprocesador
El microprocesadorEl microprocesador
El microprocesador
 
Grupo 8 informatica exposici (1)
Grupo 8 informatica exposici (1)Grupo 8 informatica exposici (1)
Grupo 8 informatica exposici (1)
 
Intel CORE 2 DUO
Intel CORE 2 DUOIntel CORE 2 DUO
Intel CORE 2 DUO
 
Core i7-1
Core i7-1Core i7-1
Core i7-1
 
Core i5-1
Core i5-1Core i5-1
Core i5-1
 
Trabajo nª 2
Trabajo nª 2Trabajo nª 2
Trabajo nª 2
 
Fernando isaiasmagañacordova procesador
Fernando isaiasmagañacordova procesadorFernando isaiasmagañacordova procesador
Fernando isaiasmagañacordova procesador
 

Destacado (6)

CUADRO DE COMANDOS
CUADRO DE COMANDOSCUADRO DE COMANDOS
CUADRO DE COMANDOS
 
Thread
ThreadThread
Thread
 
Planificacion
PlanificacionPlanificacion
Planificacion
 
GUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOSGUIA 1 HILOS Y PROCESOS
GUIA 1 HILOS Y PROCESOS
 
PThreads Vs Win32 Threads
PThreads  Vs  Win32 ThreadsPThreads  Vs  Win32 Threads
PThreads Vs Win32 Threads
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

Similar a Moodle

PARALELISMO MULTIPROCESO Y MULTICORE CPUS
PARALELISMO MULTIPROCESO Y MULTICORE CPUSPARALELISMO MULTIPROCESO Y MULTICORE CPUS
PARALELISMO MULTIPROCESO Y MULTICORE CPUSMEDUCA
 
Equipo 1 exposicion micro`procesadores
Equipo 1   exposicion micro`procesadoresEquipo 1   exposicion micro`procesadores
Equipo 1 exposicion micro`procesadoresElvis Hernadez
 
Partes internas del computador
Partes internas del computadorPartes internas del computador
Partes internas del computadori1310688
 
Nati Y Cielo Jajajajajajaja
Nati Y Cielo JajajajajajajaNati Y Cielo Jajajajajajaja
Nati Y Cielo JajajajajajajaMarce Strahl
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmFacultad de Informática UCM
 
Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...Andrés Gómez
 
microprocesadores evolucion a lo largo de los años
microprocesadores evolucion a lo largo de los añosmicroprocesadores evolucion a lo largo de los años
microprocesadores evolucion a lo largo de los añosBrianAlva3
 
PROCESADORES ULTIMA GENERACIÓN
PROCESADORES ULTIMA GENERACIÓNPROCESADORES ULTIMA GENERACIÓN
PROCESADORES ULTIMA GENERACIÓNDairaCarolina
 
ENSAMBLAJE DE COMPUTADORAS.pdf
ENSAMBLAJE DE COMPUTADORAS.pdfENSAMBLAJE DE COMPUTADORAS.pdf
ENSAMBLAJE DE COMPUTADORAS.pdfGustavoLeon56
 
Organizacion del computador
Organizacion del computadorOrganizacion del computador
Organizacion del computadorviviana111
 
Diapositivas informatica .sis operativos
Diapositivas informatica .sis operativosDiapositivas informatica .sis operativos
Diapositivas informatica .sis operativosJasmin Cárdenas
 

Similar a Moodle (20)

Equipo 2 gpus
Equipo 2 gpusEquipo 2 gpus
Equipo 2 gpus
 
PARALELISMO MULTIPROCESO Y MULTICORE CPUS
PARALELISMO MULTIPROCESO Y MULTICORE CPUSPARALELISMO MULTIPROCESO Y MULTICORE CPUS
PARALELISMO MULTIPROCESO Y MULTICORE CPUS
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 
Arquitectura risc
Arquitectura riscArquitectura risc
Arquitectura risc
 
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
 
Equipo 1 exposicion micro`procesadores
Equipo 1   exposicion micro`procesadoresEquipo 1   exposicion micro`procesadores
Equipo 1 exposicion micro`procesadores
 
Hardware para servidores 2017
Hardware para servidores 2017Hardware para servidores 2017
Hardware para servidores 2017
 
Taller de modalidad de informatica
Taller de modalidad de informaticaTaller de modalidad de informatica
Taller de modalidad de informatica
 
Partes internas del computador
Partes internas del computadorPartes internas del computador
Partes internas del computador
 
Nati Y Cielo Jajajajajajaja
Nati Y Cielo JajajajajajajaNati Y Cielo Jajajajajajaja
Nati Y Cielo Jajajajajajaja
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura Arm
 
Taller
TallerTaller
Taller
 
Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...
 
microprocesadores evolucion a lo largo de los años
microprocesadores evolucion a lo largo de los añosmicroprocesadores evolucion a lo largo de los años
microprocesadores evolucion a lo largo de los años
 
Taller
TallerTaller
Taller
 
PROCESADORES ULTIMA GENERACIÓN
PROCESADORES ULTIMA GENERACIÓNPROCESADORES ULTIMA GENERACIÓN
PROCESADORES ULTIMA GENERACIÓN
 
ENSAMBLAJE DE COMPUTADORAS.pdf
ENSAMBLAJE DE COMPUTADORAS.pdfENSAMBLAJE DE COMPUTADORAS.pdf
ENSAMBLAJE DE COMPUTADORAS.pdf
 
Unidad 0: Repaso
Unidad 0: RepasoUnidad 0: Repaso
Unidad 0: Repaso
 
Organizacion del computador
Organizacion del computadorOrganizacion del computador
Organizacion del computador
 
Diapositivas informatica .sis operativos
Diapositivas informatica .sis operativosDiapositivas informatica .sis operativos
Diapositivas informatica .sis operativos
 

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