Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con...

39
Arquitecturas de GPU de NVIDIA Martín Belzunce 1 Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad Regional Buenos Aires – Universidad Tecnológica Nacional

Transcript of Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con...

Page 1: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Arquitecturas de GPU de NVIDIA

Martín Belzunce

1Arquitecturas NVIDIA

Computación Paralela con Procesadores GráficosDepartamento de Electrónica

Facultad Regional Buenos Aires – Universidad Tecnológica Nacional

Page 2: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Evolución de las GPUs para Aplicaciones Científicas

• 2001: Primera con múltiples cores (vertex and pixel processors).

• 2003: Los procesadores se pueden programar con Cg.• 2006: Se unifican los vertex y pixel processors.• 2007: Surge CUDA.• 2008: Aritmética de punto flotante de doble precisión.• 2010: Operadores IEEE-normalized y chequeo de errpres en

memoria (ECC).• 2012: Mayor soporte para aplicaciones con cómputo irregular.• 2014: Espacio de memoria de GPU y CPU unificado.• Sigue progresando….

Arquitecturas NVIDIA 2

Page 3: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Arquitecturas NVIDIA

Arquitecturas NVIDIA 3

• Tesla– Serie G80.– Serie T10 o GT200.

• Fermi– GF– GF104

• Kepler– GK104– GK110

• Maxwell

Page 4: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Arquitecturas Tesla

Arquitecturas NVIDIA 4

• Primera Arquitectura compatible con CUDA• Primera Generación G80 -> Ej: GTX8800• Segunda Generación T10 (GT200) -> Ej:

GTX285• Compute Capabilities 1.0, 1.1, 1.2 y 1.3.

Page 5: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Tesla G80

Arquitecturas NVIDIA 5

Page 6: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Streaming Multiprocessor de Tesla G80

Arquitecturas NVIDIA 6

Page 7: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 7

Ejecución de Threads

Page 8: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 8

Arquitectura Tesla T10

Page 9: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 9

SM Tesla T10

Page 10: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 10

Memoria en Tesla

• GDDR3 DRAM

Page 11: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 11

Resumen Tesla

• Performance en Doble Precisión 10:1 respecto de Simple Precisión.

Page 12: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 12

Arquitectura Fermi

• Busca:– Mejor programabilidad y flexibilidad para que las

GPUs se usen en todo tipo de aplicaciones -> Mainstream Computing.

– Mejorar performance en precisión doble.– Mejorar performance en aquellos casos en que no

hay suficiente paralelismo para ocultar latencia de accesos a memoria -> Caches.

– Soporte ECC.– Acelerar Operaciones Atómicas.

Page 13: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 13

Arquitectura Fermi

Page 14: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 14

Arquitectura Fermi

Page 15: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 15

SM Fermi• Tercera Generación de SM• 32 Cuda Cores (x4 vs Tesla)• CUDA Core: 1 instr FP o INT por

thread por clock• Unidades FP con IEEE 754-2008• Multiplicación de Enteros de 32

bits (24 en GT200).• 16 unidades de Load/Store.• 4 unidades de SFU. 1 instrucción

por thread por clock. Independiente respecto del resto de las unidades.

• Incorpora Cache L1 en la Memoria Compartida.

Page 16: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 16

Unidades de Punto Flotante• Implementaciones en Hardware de modos de

redondeos.• Manejo de números subnormales por hardware.• En GT200: operaciones Multiply-Add (MAD) en 1 clock

pero con pérdida de precisión.• En Fermi: operaciones FMA (Fused Multiply-Add) para Simple y Doble Precisión.

Page 17: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 17

Performance en Doble Precisión

• Hasta 16 operaciones FMA por SM por clock.

Page 18: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 18

Dual Warp Scheduler

• Dos Warp Schedulers y dos Unidades de Despacho de Instrucciones.• Cada scheduler emite instrucciones a un grupo de 16 CUDA Cores, a

las 16 unidades de Load/Store o a las 4 SFU.

Page 19: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 19

Set de Instrucciones Fermi• Segunda Generación del set de

instrucciones PTX 2.0 (Parallel Thread Execution).

• Soporte para OpenCl y DirectCompute.

• Direccionamiento de 64-bit.• Soporte total para C++.• Espacio de memoria unificado para

variables y punteros.• Mejora de performance en saltos

condicionales mediante predicación.

Page 20: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 20

Jerarquía de Memoria en Fermi• La Memoria Compartida funcionaba bien solo

en ciertas aplicaciones pero otras andarían mejorar con una cache -> se incorpora cache L1 configurable con la memoria compartida.

• 64 KB de memoria en SM, configurables en 48 KB de compartida y 16 KB de cache L1 y viceversa.

• Cache L2 para todos los accesos a memoria global y texturas.

• La cache de L1 también sirve para almacenar temporariamente valores de registros (spill). (En Tesla a DRAM).

• Primera GPU en soportar códigos de chequeo de errores (ECC).

• Instrucciones atómicas más rápidas.

Page 21: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 21

Comparación GPUs Tesla - Fermi

Page 22: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 22

Resumen Fermi• Introducción de Caches de L1 y L2.• Operaciones de Punto Flotante más precisas.• Performance 2:1 en Doble Precisión respecto de

Simple.• Nuevo set de instrucciones compatible con C++.• Mayor capacidad de hardware en Gflops/seg y

ancho de banda en memoria global y pci express.

Page 23: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 23

Evolución de Potencia Total

Page 24: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 24

Potencia Máxima PCI Express• Slot PCI Express: 75 W.

• Conector 6 pines: 75W.• Conector 8 pines 150W.• Máxima potencia: 300W.• Límite de GPUs NVIDIA: 250W.

Page 25: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 25

Arquitectura Kepler• Seguir mejorando la performance pero sin aumentar el consumo total ->

Mayor Eficiencia• Primera Generación de Kepler: GK104 (Por ej: GTX680). Diseñada para

obtener la mejor performance/watt posible.• Introduce SMX. Trabaja a mitad de frecuencia pero incorpora muchos más

cores, duplicando perofrmance por watt respecto de Fermi.

Page 26: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 26

Kepler GK104<- GTX-680• 8 SMX• 4 Controladores de Memoria (con su proprio sector de L2)• Cada SMX >> Cuda Cores (1536).

Page 27: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 27

Next Generation SM: SMX

GPUs con menos SMX pero más cores en total

Aumentan considerablemente

los procesadores

Page 28: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 28

SMX• 192 Cuda Cores• 32 LD/ST y 32 SFU• 16 unidades de textura• 4 Warp Schedulers• Cada Warp Scheduler despacha dos

instrucciones por warp por clock.• En tiempo de compilación se prevee

parte de la planificación de instrucciones.

• Diseñada para Gaming: 1/12 performance en Doble Precisión.

Page 29: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 29

Warp Scheduler

Page 30: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 30

Mejoras en GK104• Mejora de rendimiento sacando shader clock.

• Mayor Ancho de Banda para Cache Hits de L2.• Mejora en las instrucciones atómicas.

• Instrucciones Atómicas de 64 bit.• Memoria Global 6 Gbps DDR5.

Page 31: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 31

Kepler GK110

• Pensada para cómputo. Mayor performance, seis controladores de memoria. Mayor capacidad de procesamiento: 15 SMX.

Page 32: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 32

Kepler GK110

Page 33: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 33

SMX en GK110• Similar a SMX en

GK104, pero con unidades de Doble Precisión (64). 1/3 Single Precisión

• 48 KB de solo lectura (Cache de texturas y constantes)

Page 34: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 34

Jerarquía de Memoria• Agrega una opción más de

configuración entre cache L1 y Memoria Compartida (32/32)

• Doble de ancho de banda en memoria compartida

• El uso de la cache de solo lectura se puede utilizar fuera de las texturas (por compilador o programador: const * __restrict__ o __ldg()).

• 1536 KB de cache de L2.

Page 35: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Introducción 35

Paralelismo Dinámico

• Fermi era buena para grandes cantidades de datos a procesar predefinidos en tiempos de lanzamiento de kernel.

• En aplicaciones genéricas, la cantidad de datos a procesar puede definirse en tiempo de ejecución.

• GK110 permite que un kernel, lance otro kernel, cree streams, eventos, etc sin interacción con el CPU. Ejemplo: loops con diferente cantidad de datos en cada ciclo.

Page 36: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Hardware Disponible

Introducción a la Materia 36

• Servidor FERMI: 10.0.6.66. – 1 GTX-480.

• Servidor Optimus: ?– 2 GTX-480– 2 Tesla c2070

• Tercer Servidor a Instalar.– 2 GTX-480– 2 Tescla c2070

Page 37: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Herramientas de Trabajo

Introducción a la Materia 37

• Cmake• Kdevelop• Nsight• CUDA Toolkit• SVN• Torque• Visual Profiler

Page 38: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

PlanificaciónClase Nº 1 12/08/14 Introducción a la Materia y a GPGPU. Primeros pasos con CUDA.

Sin Clases 19/08/14 Día de la UTN.

Clase Nº 2 26/08/14 CUDA y Arquitectura de Procesadores NVIDIA.

Clase Nº 3 02/09/14 Clase Práctica. Suma y Producto de Matrices.

Clase Nº 4 09/09/14 Uso de Distintos Tipos de Memoria con CUDA. Reducción.

Clase Nº 5 16/09/14 Ocupación. Herramientas de Trabajo: Nsight, cuda-gdb, cmake, visual profiler, cuda_occupancy_calculator.

Clase Nº 6 23/09/14 Procesamiento de Imágenes con CUDA.

Clase Nº 7 30/09/14 Parcial Teórico y TP Nº 1.

Clase Nº 8 07/10/14 TP Nº 1

Clase Nº 9 14/10/14 Bibliotecas externas: CuBlas, CULA, Thrust, CUFFT.

Clase Nº 10 21/10/14 Optimizaciones Avanzadas.

Clase Nº 11 28/10/14 Streams y Ejecución Asincrónica.

Clase Nº 12 04/11/14 Parcial Teórico y TP Nº 2.

Clase Nº 13 11/11/14 TP Nº 2.

Clase Nº 14 18/11/14 Multi-GPU.

Clase Nº 15 25/11/14 OpenCL.

Fecha Límite Promoción

09/12/14 Fecha límite para entregar tps y tener parciales aprobados.

Introducción a la Materia 38

Page 39: Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con Procesadores Gráficos Departamento de Electrónica Facultad.

Bibliografía• NVIDIA Inc., CUDA C Programming Guide, version 5.5, 2013. • David B. Kirk, Wen-mei W. Hwu. Programming Massively

Parallel Processors: A Hands-on Approach, Morgan Kaufmann, 2010.

• Introduction to Parallel Programming - Peter Pacheco - Ed. Elsevier Morgan Kaufman. 2011

• Programming Massively Parallel Processors. Hands-on Approach . David B. Kirk and Wen-mei W. Hwu. Elsevier. 2009.

• GPU Computing Gems. Emerald Edition . Wen-mei W. Hwu. Elsevier. 2011.

• Jason Sanders, Edward Kandrot, CUDA by Example, Addison-• Wesley, 2010.

Introducción 39