GPU: Arquitectura -...

19
GPU: Arquitectura Clase 3

Transcript of GPU: Arquitectura -...

Page 1: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

GPU: Arquitectura

Clase 3

Page 2: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

PasadoCPU monoprocesador... capacidad limitada, a la vez que las aplicaciones cada vez necesitan más velocidad de procesamiento y recursos para atender dichas demandas.

Arquitecturas multicores: CPUs con 2 o más cores. Se incorporan más nucleos para acelerar las aplicaciones existentes.

En vez de aumentar la capacidad en el chip del procesador → se agregan más cores → paralelismo.

Page 3: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Presente

Arquitecturas many cores: GPUs con cientos y miles de cores.

Optimizan el desempeño

de las aplicaciones.

Page 4: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

¿Por qué esta diferencia tan grande?

La respuesta está en las distintas filosofías de diseño...

Multicores: mejorar desempeño de soluciones secuenciales.

Many cores: optimizar el throughput de muchos threadsejecutando en paralelo.

A partir del año 2009 la diferencia de las velocidades para ambas arquitecturas es

de 10 a 1 (GPU-CPU)

Page 5: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo yno a técnicas para disminuir la latencia.

Cómo se logran las mejoras?CPU: optimización del código secuencial.GPU: optimización de código paralelo.

Page 6: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo yno a técnicas para disminuir la latencia.

Las optimizaciones de las arquitecturas multicore son hechas para proveermejor desempeño a las soluciones secuenciales, por ejemplo:- proveer lógica de control compleja para la ejecución paralela de código secuencial- incluir memorias caché más rápidas y más grandes para disminuir la latencia de las instrucciones.

Page 7: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo yno a técnicas para disminuir la latencia.

En GPU se busca optimizar el throughput de muchos cores ejecutando en paralelo:- si un core está esperando por al finalización de una operación, se le asigne trabajo y no permanece ocioso..- las memorias caché son pequeñas, ayudan a mantener el ancho de banda definido para todos los threads paralelos.La mayor parte de la arquitectura está dedicada a cómputo y no a

técnicas para disminuir la latencia.

Page 8: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Otro punto de discrepancia: ancho de banda de la memoria

El ancho de banda de CPU está compartido por todas las aplicaciones, operacions de E/S, funciones del SO coexistentes en el sistema, etc.

Las GPUs mantienen la diferencia de ancho de banda 10 veces superior a CPU

Page 9: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

GPUs son diseñadas como computadoras especializadas para cómputo numérico.

Contar con una arquitectura de trabajo híbrida permite aprovechar las ventajas de CPU y de GPU.

CPU para operaciones secuenciales.

Page 10: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Podemos aprovechar las ventajas de cada tipo de sistema.

Desde el HPC: es necesario conocer las características del hardware:

para aprovechar sus ventajas,

evitar posibles penalizaciones por sus propias caracaterísticas.

Page 11: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Fuente:L Fermi GF100 GPU arquitecture by Craig Wittenbrink, Emmet Kilgariff, Arjun Prabhu. IEEE Computer Society2. GF100 White Paper. NVIDIA.

Arquitectura de ejemplo: Fermi GF100 (año 2010)

● Dispone de 512 cores CUDA:● dividios en 16 Streaming

Multiprocessor (SM)

● 6GB de DRAM (en 6 pariticiones)

● Host interface: conecta a CPUvia PCI-express

● El GigaThread global schedulerdistribuye bloques a los SM thread scheduler.

Page 12: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

CUDA es una arquitectura de hardware y software que permite ejecutar programas en placas gráficas de NVIDIA.

:Un thread de un bloque ejecuta una instancia de un kernel. Tiene su propio id dentro de su bloque, su propio PC, registros, memoria privada, entradas y salidas.

Un bloque es un conjunto de threads concurrentes que pueden cooperar entre ellos, sincronizarse y comparten memoria. Un bloque tiene su propio id dentro del grid.

Una grilla es un arreglo de bloques de threads que ejecutan el mismo kernel, leen entradas desde memoria global, escriben resultados en memoria global, y se sincronizan entre otras llamadas a kernels.

Grid 1

Block (0,0)

Block (2,0)

Block (1,0)

Block (0,0)

Block (1,0)

Grid 2

Block (0,1)

Block (1,1)

Memoria localde thread

Memoria compartidade bloque

Memoria global

Page 13: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

CUDA es una arquitectura de hardware y software que permite ejecutar programas en placas gráficas de NVIDIA.

:

La jerarquía de threads de CUDA se mapea con una jerarquía de procesadores de la GPU:

● Una GPU ejecuta una o más grilla de kernels.

● Un Streaming Processor (SM) ejecuta uno o más bloques de threads.

● Un Core CUDA (y otras unidades de ejecución) en el SM ejecutan threads.

● Los SM ejecutan grupos de 32 threads llamados warps.

Grid 1

Block (0,0)

Block (2,0)

Block (1,0)

Block (0,0)

Block (1,0)

Grid 2

Block (0,1)

Block (1,1)

Page 14: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Arquitectura de ejemplo: Fermi GF100 (año 2010)

Page 15: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Arquitectura de ejemplo: Fermi GF100 (año 2010)

Streaming Multiprocessor

Page 16: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

Streaming Multiprocessor

● Cada SM tiene: ● Naranja: scheduler y dispatch● Verde: unidades de ejecución● Azul: file registers y cache L1

Page 17: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

● Fermi GF100 dispone de 512 cores CUDA

organizados en 16 SM de 32 cores cada uno.

● Un core CUDA ejecuta una instrucción

de thread (punto flotante o entero)

por ciclo de reloj.

● Cada core tiene una unidad entera

Aritmético lógica (ALU) y una unidad

de punto flotante (FPU). – Las unidades enteras soportan varias instrucciones:

boolean, shift, move, compare, convert, etc.

Page 18: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

● LOAD / STORE units: permiten

calcular direcciones de datos

origen o destino para 16

threads por ciclo de reloj.

Se almacenan o cargan los datos

de cada dirección en cache o DRAM.

● Las Special Function Units (SFUs) ejecutan

instrucciones transcendentales como sin,

cos, inversa, raices cuadradas. Cada SFU

ejecuta una instrucción por thread, por ciclo

de reloj: un warp ejecuta en 8 clocks.

La planificación de las SFU se desacopla de

la dispatch unit, permitiendo que esta misma

planifique las otras unidades de ejecución mientras

las SFUs están ocupadas.

Page 19: GPU: Arquitectura - fisica.cab.cnea.gov.arfisica.cab.cnea.gov.ar/gpgpu/images/clases/clase_3_arquitectura... · En las GPUs, la mayor parte de la arquitectura está dedicada a cómputo

● Dual Warp Scheduler – Cada SM incluye dos Warp Schedulers y dos Instruction Dispatch Units

lo que permite que dos warps se puedan ejecutar de forma concurrente.

– Se selecciones 2 warps y se toman una instrucción de cada uno. Esta

instrucción se distribuye a un grupo de 16 cores, 16 load/store units,

o 4 SFUs.

– Las ejecuciones de los warps son independientes. Casi todas las operaciones

pueden ser “repartidas” de a dos: dos instrucciones int, 2 instrucciones

floating point o mezcla de int, floating point, load, store, y SFU instructions

(excepto operaciones en doble precisión).