Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con...
-
Upload
hernan-contrera -
Category
Documents
-
view
229 -
download
0
Transcript of Arquitecturas de GPU de NVIDIA Martín Belzunce 1Arquitecturas NVIDIA Computación Paralela con...
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
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
Arquitecturas NVIDIA
Arquitecturas NVIDIA 3
• Tesla– Serie G80.– Serie T10 o GT200.
• Fermi– GF– GF104
• Kepler– GK104– GK110
• Maxwell
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.
Tesla G80
Arquitecturas NVIDIA 5
Streaming Multiprocessor de Tesla G80
Arquitecturas NVIDIA 6
Introducción 7
Ejecución de Threads
Introducción 8
Arquitectura Tesla T10
Introducción 9
SM Tesla T10
Introducción 10
Memoria en Tesla
• GDDR3 DRAM
Introducción 11
Resumen Tesla
• Performance en Doble Precisión 10:1 respecto de Simple Precisión.
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.
Introducción 13
Arquitectura Fermi
Introducción 14
Arquitectura Fermi
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.
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.
Introducción 17
Performance en Doble Precisión
• Hasta 16 operaciones FMA por SM por clock.
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.
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.
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.
Introducción 21
Comparación GPUs Tesla - Fermi
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.
Introducción 23
Evolución de Potencia Total
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.
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.
Introducción 26
Kepler GK104<- GTX-680• 8 SMX• 4 Controladores de Memoria (con su proprio sector de L2)• Cada SMX >> Cuda Cores (1536).
Introducción 27
Next Generation SM: SMX
GPUs con menos SMX pero más cores en total
Aumentan considerablemente
los procesadores
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.
Introducción 29
Warp Scheduler
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.
Introducción 31
Kepler GK110
• Pensada para cómputo. Mayor performance, seis controladores de memoria. Mayor capacidad de procesamiento: 15 SMX.
Introducción 32
Kepler GK110
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)
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.
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.
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
Herramientas de Trabajo
Introducción a la Materia 37
• Cmake• Kdevelop• Nsight• CUDA Toolkit• SVN• Torque• Visual Profiler
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
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