Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU:...

64
PARTE A Motivación 3EAGPGPU 3EAGPGPU Pablo Ezzatti CUDA Básico

Transcript of Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU:...

Page 1: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

3EAGPGPU

Pablo Ezzatti

CUDA Básico

Page 2: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Parte A

Page 3: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Contenido

• Agradecimientos

• Motivación

• Algo de Historia

• CUDA (modelo de ejecución, jerarquía de memoria)

• Resumen

Page 4: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Agradecimientos

Page 5: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Agradecimientos

• Parte importante del material que utilizaremos está tomado de los cursos dictados en la UdelaR:

– Computación de Propósito General en Unidades de Procesamiento Gráfico

– Taller GPGPU

de los docentes E. Dufrechou, M. Pedemonte y J.P. Silva.

• También del material que utilizaba Francisco Igual en la UJI en su curso de GPGPU.

• Otro montón de gente …

Page 6: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

Page 7: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• Utilización de hardware secundario para acelerar cómputos.

• Usar la tarjeta gráfica (GPU) para resolver problemas de

propósito general (GPGPU).

• Se sustenta en el fuerte desarrollo tecnológico de las GPUs

debido a la gran presión de la industria de los videojuegos.

• Surgimiento de lenguajes de programación de propósito

general para programar las GPUs como CUDA y OpenCL.

Page 8: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• Es una plataforma ampliamente disponible.

• Ya en 2009 180 millones de GPUs que soportaban CUDA (de

acuerdo a Luebke de Nvidia).

• Representan una tecnología que puede incorporarse tanto a un

laptop como a una supercomputadora.

• Es una tecnología barata.

Page 9: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

"Las GPUs han evolucionado hasta un punto en que muchas de las

aplicaciones industriales actuales se ejecutan en ellas con niveles

de rendimiento muy superiores a los que ofrecerían si se

ejecutasen en sistemas multinúcleo. Las arquitecturas informáticas

del futuro serán sistemas híbridos con GPUs compuestas por

núcleos de procesamiento paralelo que trabajarán en colaboración

con las CPUs multinúcleo".

Prof. Jack Dongarra

Director del Innovative Computing Laboratory

Universidad de Tennessee

Motivación

Page 10: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• Hoy en día existe una apuesta fuerte de Nvidia por la adopción

de GPUs para la computación de alta performance.

• Varias supercomputadoras del top 500 emplean GPUs.

• Cientos de instituciones educativas enseñando GPGPU.

• Desarrollo de una comunidad científica, conferencias, etc.

Page 11: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

Arquitectura intrínsecamente paralela (multiprocesadores)

Page 12: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• En una CPU tradicional gran parte de los transistores están dedicados a realizar otro tipo de tareas:

– Predicción de branches.

– Prefetch de memoria.

– Ejecución fuera de orden.

– Caché de datos.

• En las GPUs hay más transistores dedicados al cálculo.

Page 13: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

Pico teórico de performance en GFLOP/s

Page 14: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• ¿Cómo se calcula el pico teórico de performance?

– FLOPS = #cores * Frecuencia * Ops

o FLOPS: operaciones de punto flotante por segundo

o #cores: número de cores

o Frecuencia: frecuencia del core

o Ops: operaciones de punto flotante por core y por ciclo.

• La cantidad de operaciones de punto flotante por core depende de:

– Si es una CPU o una GPU.

– Si se trabaja en simple o en doble precisión.

Page 15: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• Un ejemplo de CPU: Westmere

– 8 ops de precisión simple por ciclo por core.

– 4 ops de precisión doble por ciclo por core.

– Gulftown/Westmere-EP: 6 Cores a 3.46 GHz

– Pico en simple = 6 * 3.46 * 8 = 166.08 GFLOPS

– Pico en doble = 6 * 3.46 * 4 = 83.04 GFLOPS

– Si consideramos que el hyperthreading multiplica por 2 la performance (hipótesis bastante dudosa):

– Pico en simple: 332.16 GFLOPS

– Pico en doble: 166.08 GFLOPS

Page 16: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• Un ejemplo de GPU: GeForce GTX 480

– 2 ops de precisión simple por ciclo por core.

– 1/2 ops de precisión doble por ciclo por core.

– GeForce GTX480: 480 CUDA Cores a 1.4 GHz

– Pico en simple = 480 * 1401 * 2 = 1344.96 GFLOPS

– Pico en doble = 480 * 1401 * 1/2 = 336.24 GFLOPS

• Algunos comentarios:

– Ojo! Un mega y un giga son 1000 y no 1024.

– En las GeForce deshabilitan parte del funcionamiento de doble precisión. Las Tesla hacen más operaciones por ciclo pero son más caras.

Page 17: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

Pico teórico de tasa de transferencia de memoria en GB/s

Page 18: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• ¿Cómo se calcula el pico teórico de tasa de transferencia de memoria?

– Tasa de transferencia = ancho del interfaz de memoria * frecuencia de la memoria.

• Un ejemplo de CPU: Westmere

– ancho del interfaz de memoria = 64 bits = 8 bytes

– la memoria es 3×DDR3-1333 que puede leer o escribir dos palabras de datos por vez y cuatro veces por ciclo de reloj.

– frecuencia de la memoria = 166.66 Mhz

– Tasa de transferencia = 3*2*4*8*166.66 = 31.99 GB/s

Page 19: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• Un ejemplo de GPU: GeForce GTX 480

– ancho del interfaz de memoria = 384 bits = 48 bytes

– frecuencia de la memoria = 1848 Mhz

– la memoria es GDDR5 que puede leer o escribir dos palabras de datos por ciclo de reloj.

– Tasa de transferencia = 48 * 1848 * 2 = 177.40 GB/s

Page 20: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Motivación

• La otra cara de la moneda:

– Estudio comparativo realizado por Intel entre un i7 de 4 cores y una GTX280 sobre varios problemas.

– La gráfica muestra la performance relativa entre la GTX280 y el i7.

Page 21: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

Page 22: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• 1981 – Monochrome Display Adapter (MDA):

– No permitía el despliegue de gráficos.

– Solamente en modo texto: 80 columnas x 25 líneas, monocromo.

– 4 KB de memoria.

Page 23: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• 1982 – Hercules Graphics Card:

– En modo texto: 80 columnas x 25 líneas, monocromo.

– En modo gráfico todos los pixeles eran direccionables: 720 x 348 (mono).

– 64 KB de memoria.

Page 24: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• 1981 – Color Graphics Adapter (CGA):

– En modo texto: 80 columnas x 25 líneas (16 colores) pero con más baja resolución y 40 columnas x 25 líneas (16 colores).

– En modo gráfico: 640 x 200 (mono), 320 x 200 (4 colores) y 160 x 200 (16 colores).

– 16 KB de memoria.

Page 25: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• 1984 – Enhanced Graphics Adapter (EGA):

– Resolución: 640 x 350 (16 colores de una paleta de 64 colores).

– 64 KB y 256 KB de memoria.

Page 26: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• 1987 – Video Graphics Array (VGA):

– Último estándar exitoso de IBM.

– Diseñado como un single chip.

– Resoluciones: 640 x 480 (16 colores) y 320 x 200 (256 colores).

– 256 KB de memoria.

Page 27: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• Durante la década del ‘90 se mejoran las resoluciones:

– Super VGA: 800 x 600.

– XGA: 1024 x 768 (256 colores, 8 bits por pixel) y 800 x 600 (65536 colores, 16 bits por pixel).

Page 28: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia…

• Durante la década del ‘90 se presentan las primeras tarjetas con capacidad de reproducir efectos en 2D/3D:

– 3dfx Interactive (1996-2000):

– Línea Voodoo

– ATI (1995-2004):

– Línea Rage

– Nvidia (1998-2005):

– Líneas TNT y GeForce

Page 29: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia (El pipeline gráfico)

• Las operaciones para visualizar imágenes en pantalla se agrupan en un proceso conocido como pipeline gráfico.

• Típicamente se deben desplegar imágenes que son proyecciones de escenas tridimensionales en una pantalla bidimensional.

• Durante la década del 90 se diseñan tarjetas gráficas que van incorporando etapas del pipeline gráfico, con el fin de aliviar a la CPU.

• En 1999, Nvidia lanza al mercado la GeForce 256 que es considerada la primera GPU (Graphics Processing Unit).

• La GeForce 256 es la primera tarjeta de video consumer-level que implementa el pipeline gráfico completo.

Page 30: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia (El pipeline gráfico)

• Hay distintas formas de abstraer el pipeline gráfico.

• Suelen recibir como entrada una colección de “triángulos”.

• En el último paso, devuelve como resultado la imagen en la pantalla.

Page 31: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia (Tarjetas programables)

• Las tarjetas de video viejas tenían un pipeline gráfico fijo.

• Las operaciones ejecutadas y el orden en que se aplicaban sobre los datos estaba preconfigurado.

• Originalmente, las GPUs proveían operaciones propias para la transformación e iluminación (vertex shaders) en los vértices, y para determinar el color final de los píxeles (pixel shaders).

Page 32: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia (Tarjetas programables)

• En los últimos diez años, las GPUs han tenido cambios impresionantes.

• 1999-2006: se produce una mejora significativa en las capacidades de programación de las GPUs.

• Algunos hitos son:

– GeForce 3 (2001): primera GPU que ejecutaba vertex shaders programados en DirectX 8 (pudiendo programar la etapa de VS/T & L).

– ATI Radeon 9700 (2002): introdujo la aritmética de punto flotante de 24 bits en los pixel shaders (DirectX 9 y OpenGL).

– GeForce FX (2002-2003): introdujo el trabajo con aritmética de punto flotante de 32 bits.

– Xbox 360 (2005): primera arquitectura unificada de procesadores para el pipeline gráfico. Una sola clase de procesadores computa las distintas secciones del pipeline.

Page 33: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia (Tarjetas programables)

• En un principio, el avance en el hardware no fue acompañado por un avance en el software de manejo de las GPUs.

• Inicialmente la programación de las GPUs se realizaba a bajo nivel.

• Posteriormente, se comenzaron a desarrollar los shaders en el lenguaje ensamblador específico de cada modelo.

• Esto implicaba la existencia de varios lenguajes y baja portabilidad de los programas.

• Otra alternativa era utilizar las APIs gráficas como OpenGL y DirectX.

Page 34: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Un poco de historia (Tarjetas programables)

• La situación anterior representaba una limitación para el desarrollo de aplicaciones.

• Para solucionarlo se desarrollaron diferentes lenguajes de programación de más alto nivel que funcionaran sobre los modelos de GPU existentes, como: High-Level Shading Language (HLSL) y Cg.

• Posteriormente, otros lenguajes de alto nivel surgieron basados en considerar la GPU como un stream processor como: Brook, Sh, Accelerator Language, Close to the Metal (CTM) y ATI Stream.

• Sin embargo, cada herramienta seguía siendo muy dependiente de la arquitectura de la GPU, el modelo, etc.

Page 35: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

¿Por qué una arquitectura unificada?

Page 36: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

¿Por qué una arquitectura unificada?

La arquitectura de la GeForce 7800

Page 37: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

¿Por qué una arquitectura unificada?

Page 38: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

¿Por qué una arquitectura unificada?

Page 39: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

¿Por qué una arquitectura unificada?

Page 40: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA

Page 41: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA

• En el año 2007, Nvidia presenta CUDA (Compute Unified Device Architecture).

• Produjo un cambio radical en la arquitectura de las GPUs de Nvidia: arquitectura unificada sin distinción entre procesadores de píxeles y vértices.

• Produjo un cambio radical en el software para desarrollo de aplicaciones en las GPUs de Nvidia.

• Es el mojón más importante desde el nacimiento de la programación de propósito general en GPUs (según M. Pedemonte ).

• Masificó la GPGPU, ya que dejó de ser un juego para eruditos y se transformó en una alternativa a la alcance de cualquier desarrollador.

Page 42: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA

• Pero, ¿qué es CUDA?

• Es una arquitectura de software para el cómputo de propósito general.

• Está enfocada al cálculo masivamente paralelo y las capacidades de procesamiento que brindan las tarjetas gráficas de Nvidia.

• Está disponible para las tarjetas gráficas GeForce de la serie 8 en adelante.

• Está basado en una extensión del lenguaje de programación C.

Page 43: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA

• Se compone de una pila de capas de software que incluye bibliotecas, el CUDA Runtime y el CUDA Driver.

Page 44: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA

• Bibliotecas de CUDA:

– Originalmente dos bibliotecas matemáticas de alto nivel: CUFFT y CUBLAS.

– CUFFT para el cálculo de Transformadas de Fourier.

– CUBLAS es una implementación parcial de BLAS (Basic Linear Algebra Subprograms) en GPU.

• CUDA Driver:

– Es un controlador de hardware.

– Da soporte a las transferencia de datos entre la CPU y la GPU.

• CUDA Runtime:

– Provee una interfaz de programación de aplicaciones (API).

– Provee un conjunto de instrucciones accesible a través de lenguajes de alto nivel como es C.

Page 45: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA

• Al programar en CUDA, la GPU se ve como un dispositivo de cómputo capaz de ejecutar un número muy elevado de hilos en paralelo.

• La GPU (device) funciona como un coprocesador de la CPU (host).

• Si una parte de una aplicación se ejecuta muchas veces pero en forma independiente sobre diferentes datos, puede ser aislada en una función que se ejecutará en el dispositivo mediante muchos hilos de ejecución en forma concurrente.

• La función se compila usando el conjunto de instrucciones del dispositivo.

• El programa resultante, llamado núcleo (kernel), se descarga en el dispositivo para su ejecución.

Page 46: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

CUDA (Modelo de ejecución)

• La arquitectura de la CPU utiliza caché de datos para ocultar la latencia en el acceso a la memoria RAM.

• La arquitectura de la GPU elimina (o reduce sensiblemente) el caché de datos.

• Las GPUs para ocultar la latencia en el acceso a la memoria:

– cuando un conjunto de threads accede a memoria, se suspende su ejecución hasta que los datos hayan llegado al SM.

– otro conjunto de threads comienza a ejecutar.

– el scheduling (planificación) se realiza por hardware en forma transparente para el programador y prácticamente sin costo.

• Esto fomenta tener muchos más threads que unidades de ejecución.

Page 47: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• Los multiprocesadores tienen la capacidad de crear, gestionar y ejecutar hilos concurrentemente prácticamente sin costo de planificación.

• La arquitectura CUDA permite abstraer la GPU como un conjunto de multiprocesadores compuestos a su vez por un conjunto de procesadores orientados a la ejecución de hilos.

• En el modelo de ejecución de CUDA cada multiprocesador ejecuta el mismo programa pero sobre distintos datos.

• Cada multiprocesador NO tiene que estar ejecutando la misma instrucción en el mismo momento.

• Este paradigma de programación se conoce con el nombre SPMD (single program multiple data).

Page 48: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• Internamente cada multiprocesador sigue el paradigma de programación paralela SIMT (Single Instruction Multiple Threads).

• SIMT es similar a SIMD (Single Instruction Multiple Data) ya que una sola instrucción controla múltiples elementos de procesamiento.

• Sin embargo, no son exactamente la misma cosa.

Page 49: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• SIMT (como las GPUs):

– Cada “carril” del cómputo vectorial puede verse como un hilo separado.

– Existe una única unidad (hardware sequencer) que se encarga de gestionar el trabajo en paralelo sobre un grupo de esos hilos.

– Una única instrucción se difunde a todos los elementos de procesamiento.

– Si todos los hilos deben ejecutar la misma instrucción, se dice que los hilos mantienen coherencia.

– Si los hilos deben ejecutar instrucciones distintas, los hilos divergen.

– La unidad (hardware sequencer) mantiene la información de que hilos han divergido.

Page 50: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• SIMT (como las GPUs):

– La unidad difunde una única instrucción por ciclo a todos los elementos de procesamiento que pueden ejecutar (en función de las divergencias).

• Como consecuencia del funcionamiento descrito, el mismo programa podría ejecutar si cada hilo ejecutara en forma independiente en un core distinto.

• En contraste con SIMD, SIMT permite tener:

– paralelismo a nivel de datos: cuando los hilos son coherentes.

– paralelismo a nivel de hilo: cuando los hilos divergen, cada hilo ejecuta en forma independiente.

Page 51: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• Consideramos la GPU ejecutando un kernel.

• La ejecución de un kernel es realizada por hilos que se organizan en bloques.

• Los bloques pueden ser unidimensionales, bidimensionales o tridimensionales.

• Los bloques se organizan en un grid.

• El grid puede ser unidimensional, bidimensional o tridimensional.

Page 52: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• Cada bloque es un subconjunto de los cómputos que será ejecutado en un multiprocesador (MP) en forma independiente.

• Si hay suficientes MPs disponibles, todos los bloques de un grid son ejecutados en paralelo.

Page 53: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• En caso contrario, el scheduler gestiona la ejecuciones de los bloques:

– Un MP puede ejecutar múltiples bloques.

– El orden de ejecución de los bloques no es conocido a priori.

• Cada hilo de un bloque ejecuta en un CUDA core del MP.

Page 54: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• Organizar la ejecución de esta manera permite escalar automáticamente.

Page 55: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• La ejecución se planifica en base a warps.

• El MP crea, gestiona, planifica y ejecuta en base a grupos de hilos llamados warps.

• El tamaño de warp es 32 hilos.

• Cuando un MP debe ejecutar un bloque, lo particiona en warps.

• Cada warp contiene hilos consecutivos.

Page 56: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Modelo de ejecución

• Un warp ejecuta una instrucción a la vez.

• Si los hilos de un warp divergen debido a una condición de bifurcación dependiente de los datos:

– El warp serializa la ejecución de cada camino de la bifurcación, deshabilitando los hilos que no forman parte del camino de ejecución.

– Cuando todos los caminos completan su ejecución, los hilos convergen al mismo camino de ejecución.

• Como consecuencia, la eficiencia máxima se logra cuando los hilos de un warp coinciden en su camino de ejecución.

• La divergencia ocurre únicamente dentro de un warp.

• Distintos warps ejecutan en forma independiente, sin tener en cuenta si están ejecutando caminos comunes o disjuntos.

Page 57: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Jerarquía de memoria

• Existen varios tipos de memoria distintos en el dispositivo:

– Global

– Local

– Compartida

– Registros

– Constante

– Texturas

• Diremos que una memoria es on-chip cuando está en el mismo chip que los CUDA cores.

• Diremos que una memoria es off-chip cuando NO está en el mismo chip que los CUDA cores.

Page 58: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Jerarquía de memoria

• Memoria global:

– Todos los hilos que ejecutan en la GPU tienen acceso al mismo espacio global de memoria.

– Es off-chip.

– El acceso es el más lento y no es cacheado.

• Registros:

– Es on-chip.

– Es la más rápida de la GPU.

– Sólo son accesible por cada hilo.

– Este espacio de memoria es gestionada por el compilador.

Page 59: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Jerarquía de memoria

• Memoria local:

– Cada hilo tiene su propia memoria local.

– Es una de las memorias más lentas de la GPU y no es cacheado.

– Es off-chip.

– Este espacio de memoria es gestionada por el compilador.

– La figura muestra esta memoria cercana a los hilos y como privada a cada hilo. Sin embargo, realmente es off-chip.

Page 60: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Jerarquía de memoria

• Memoria compartida:

– Cada bloque tiene un espacio de memoria compartida que es prácticamente tan rápida como los registros.

– Puede ser accedida por cualquier hilo del bloque.

– Es on-chip.

– Su tiempo de vida es igual al tiempo de vida del bloque.

Page 61: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Jerarquía de memoria

• Memoria constante:

– Es una memoria rápida.

– Para el dispositivo es solamente de lectura

– Es off-chip aunque es cacheada.

– Puede ser vista como un caché a memoria global más que como un espacio de memoria distinto.

• Texturas:

– Tiene características similares a la memoria constante.

Page 62: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Jerarquía de memoria

Memoria Ubicación Caché Acceso Alcance Existencia

Constante Off-chip Sí R Device Aplicación

Local Off-chip No R-W Thread Aplicación

Global Off-chip No R-W Device Aplicación

Compartida Chip No R-W Bloque Bloque

Registros Chip - R-W Thread Thread

Texturas Off-chip Sí R??R-W?? Device Aplicación

Page 63: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Resumen

Page 64: Presentación de PowerPoint...PARTE A – Motivación 3EAGPGPU Motivación • Un ejemplo de GPU: GeForce GTX 480 –2 ops de precisión simple por ciclo por core.

PARTE A – Motivación 3EAGPGPU

Resumen

• Hardware interesante, altamente paralelo.

• No todo lo que brilla es oro.

• La tarjeta es un co-procesador de la CPU.

• Paralelismo de datos (con lo que vemos en este curso).