Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5,...

29
Arquitectura de aceleradores Carlos Bederián IFEG – CONICET GPGPU Computing Group – FaMAF – UNC [email protected]

Transcript of Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5,...

Page 1: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Arquitectura de aceleradores

Carlos BederiánIFEG – CONICET

GPGPU Computing Group – FaMAF – [email protected]

Page 2: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Contenidos

● Cómo llegamos hasta acá

● Qué hay ahora

● Qué hace

● Cómo lo uso

● Hacia dónde parece que vamos

Page 3: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

¿Qué compro?● $: GeForce GTX 750Ti, GTX 760

Radeon R9 270, R9 270X, R9 280

● $$: GeForce GTX 770, GTX 780, GTX 780Ti

Radeon R9 280X, R9 290, R9 290X

● $$$$: GeForce GTX Titan, GTX Titan Black

Radeon R9 295X2

● $$$$$$$$: GTX Titan Z, Tesla K10, K20, K20X, K40

FirePro W9000, W9100, S10000

Xeon Phi 3120, 5120, 7120

Page 4: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8
Page 5: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

● Interfaz externa● Tipo, ancho de banda, coherencia

● Cache L2● Tamaño, ancho de banda

● Controladores de memoria● Ancho, frecuencia

● Elementos de cómputo● Cantidad, frecuencia● Detalles internos

Cosas interesantes

Page 6: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CUDA en el hardware

● Bloques completos son asignados a SMs

● Única (?) forma rápida de cooperar

● Bloques divididos en paquetes de 32 hilos llamados warps

● El hardware ejecuta warps de manera ~atómica

● Se intercalan los warps en las unidades de ejecución

Page 7: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 2.0 - Fermi

● Ejecución:● Scheduling de hasta 48 warps● 2 warps en ejecución● 16 cores por warp, 2x frecuencia● FP64: ½ FP32 (Tesla), 1/8 (GeForce)

● Registros● ~21 floats/ints por hilo, 64 max (!!!)

● Mem. compartida + Caché L1● 64KB: 16+48 o 48+16● Broadcast o banked access

Page 8: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 2.0 (cont.)

● Caché de constantes● 8KB● Sólo broadcast● Un ciclo de latencia

● Hardware de texturas● 12KB de caché, acceso espacial● Interpolación● Generación de direcciones

● Coordenadas normalizadas● Condiciones de contorno

Page 9: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 2.1 (GTX 460)

● Superescalar● 2 warps por ciclo● Hasta dos instrucciones independientes por warp en ejecución (dual issue)

● Distinto balance● FP64: 1/12 FP32● Más SFUs● Menos LD/ST● Más unidades de texturas

Page 10: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Insostenible

06/2005 12/2005 06/2006 12/2006 06/2007 12/2007 06/2008 12/2008 06/2009 12/2009 06/2010 12/20100

50

100

150

200

250

300

130nm

90nm

65nm

55nm

40nm

TD

P (

W)

Page 11: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Power budget

● Zócalo PCI Express: 75W

● Cables PEG

● 6 pines: 75W

● 8 pines: 150W

● Estándar PCI-SIG: 300W (Slot + 6 pines + 8 pines)

Page 12: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.0 - Kepler

● Ejecución● Scheduling de 64 warps● 4 warps simultáneos

● Dual issue como CC 2.1● 32 cores por warp

● Doble de registros● 32 floats/ints por hilo

● Diseñado para gaming● FP64: 1/12 FP32

● ~2x performance/watt

Page 13: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.0 – Cooperación

● Mejoras para kernels complejos

● Operaciones atómicas en memoria global más rápidas

● ¿Y si no uso atomics para cooperar?

● Ancho de banda de memoria compartida duplicado

● ¡Pero sigo necesitando barreras lentas!

● Un warp está sincronizado implícitamente

● Pre-Kepler: Memoria compartida para intercambiar

datos intra-warp (peligroso)

Page 14: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.0 – shfl● shfl: Intercambio de datos dentro de un warp

● No requiere memoria compartida● Más rápido que memoria compartida sin barreras

● ¿Cómo lo uso?● Difícil: #include <sm_30_intrinsics.h>● Fácil: CUB, Thrust ya usan

Page 15: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.0 – Texturas

● Antes: 128 slots de texturas que deben ser administrados

● Establecer un binding antes de ejecutar kernels

● Overhead de llamadas al driver

● Engorroso

● Ahora: Bindless textures

● Uso directo

● Texturas ilimitadas por kernel

Page 16: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.5 – Kepler 2.0

● Diseñado para cómputo

● FP64: 1/3 FP32

● Hasta 255 registros/hilo

● 48 KB de caché de

texturas sólo lectura

● __ldg()

● const * __restrict__

Page 17: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.5 – Grid Management Unit

● Pre-Kepler: 3 colas de trabajo (kernels, upload, download)● Dependencias falsas al serializar streams

● HyperQ: 32 colas independientes● No hay sorpresas con streams● CUDA Multi-Process Service

● Dynamic Parallelism● Los kernels pueden encolar otros kernels

● ¡Recursión!● Pausa y continuación de kernels

Page 18: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 3.5 – Funnel shift

● Nueva instrucción: shf.{l,r}(a, b, n)

● Concatena dos operandos de 32 bit en uno de 64

● Shift n bits hacia izquierda (shf.l) / derecha (shf.r)

● Devuelve 32 bits más (shf.l) / menos (shf.r) significativos

● ¡Rotación en una instrucción!

● ¡Bitcoins!

● Criptografía

Page 19: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

CC 5.0 - Maxwell

● 192 es raro, reducción a 128

● Subdivisión en 4:● Conectar todos los cores a todos los registros es caro

● No más cores compartidos entre schedulers

● Shared sigue accesible a todos

● ~2X performance/watt

Page 20: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Futuro

Page 21: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Futuro (cont.)

● NVLink 2.0 – Coherencia de caché

● ¿Coherente con qué CPU?

● Denver – Arquitectura ARM de NVIDIA

● Ancho (7-issue), ILP alto

● Consorcio OpenPOWER

● IBM, NVIDIA, Micron, Mellanox, Samsung, Google...

● IBM licencia POWER8

● NVIDIA licencia NVLink

Page 22: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Memoria 3D● Ancho de banda normalmente limitado por:

● Cantidad de pines

● Calidad de señal

Page 23: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

¿Y AMD?● En GPUs, más o menos lo mismo

Page 24: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

HSA● En arquitecturas heterogéneas, más avanzados que el resto

● Implementaciones de HSA: Kaveri, ¿Playstation 4?

Page 25: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

El elefante en la habitación

● 1997: MMX (64 bits, enteros)

● 1999: SSE (128 bits, float)

● 2001: SSE2 (double, enteros)

● SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a...

● 2011: AVX (256 bits, float, double)

● 2013: AVX2 (enteros), FMA3 – scatter / gather

● 2016: AVX-512 (512 bits) – opmasks

Page 26: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Xeon Phi

Page 27: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Hm, suena familiarTesla K40 Xeon Phi 7120X

Vector Warp, 32 elementos* KNI (512 bits: 16 FP32, 8 FP64)

Unidades 15 SMX 61 coresRecursos por unidad

6 warps 1 core P54C1 unidad KNI

SMT 64 warps por SMX(~11 por unidad de ejecución)

4 hilos por core

Frecuencia 745 – 875 MHz 1238 – 1333 MHzFLOPS 4.3 TFLOPS FP32

1.4 TFLOPS FP642.4 TFLOPS FP321.2 TFLOPS FP64

Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GBBandwidth 288 GBps 354 GBpsTDP 245W

(5.8 GFLOPS FP64 / W)300W(4.1 GFLOPS FP64 / W)

Proceso TSMC HP 28nm Intel Tri-gate 22nm

Page 28: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Knights Landing (2015)

● 72 cores, arquitectura Silvermont (Atom)

● 2 unidades AVX-512 por core

● ~3 TFLOPS FP64

● Memoria 3D + Memoria DDR4

● Standalone o acelerador PCIe

● Intel 14nm

Page 29: Arquitectura de aceleradores · 2014. 5. 6. · ¿Y AMD? En GPUs, más o ... Memoria 384-bit GDDR5, 6GHz, 12GB 512-bit GDDR5, 5.5GHz, 16GB Bandwidth 288 GBps 354 GBps TDP 245W (5.8

Eso es todo amigos

¿Preguntas?