====== 10. Tarjetas Gráficas ======
En este tema vamos a hablar de las tarjetas gráficas centrándonos en las de la marca NVIDIA, aunque también existen otros fabricantes como AMD o Intel.
Una tarjeta gráfica está compuesta de lo siguiente:
* Placa o PCB: Donde se ensambla todo.
* Unidad de procesamiento gráfico o GPU (Graphics Processing Unit)
* Memoria
* Salida de video (Conectores)
* Ventiladores
Mas información:
* [[https://es.wikipedia.org/wiki/Tarjeta_gr%C3%A1fica|Tarjeta gráfica]]
* {{ :clase:asir:fhw:2eval:jaume_moreno_gallego_trabajo_tarjetas_graficas.pdf |Trabajo del alumno de 1º de ASIR Jaume Moreno}}
===== GPU =====
Al igual que una CPU esta compuesta por núcleos, una GPU está compuesta por Streaming Multiprocessor o SM
La diferencia entre un Núcleo de una CPU y un Streaming Multiprocessor de una GPU es que una GPU es prácticamente muchisimas ALUs o FPUs.
{{:clase:asir:fhw:2eval:cpu-gpu.png|}}
La siguiente arquitectura es de una Tarjeta gŕafica "NVIDIA Quadro RTX 6000" con arquitectura Turing y GPU **TU102**
* 6 GPU Processing Clusters o GPC. Cache L2
* 6 Texture Processing Clusters TPC
* 2 Streaming Multiprocessor o SM. Cache L1
* 64 CUDA Cores: Cada CUDA Core es una FPU. Tambien llamado FP32. Ya que ejecutan operaciones con números en coma flotante de 32 bits.
* 64 ALUs: A las ALU se les llama INT32 ya que ejecutan operaciones con números enteros de 32 bits
* 8 Tensor Cores: Multiplicación y suma de matrices (ALUS o FPUs). Se usan en inteligencia artificial (Redes neuronales)
* 1 RTX core: Trazado de rayos en video juegos.
Normalmente en las especificaciones no se suele indicar el número de ALUs o INT32 ya que como ya dijimos en las CPUs "ocupan" poco espacio en comparación con una FP32 o FP64 (o CUDA Core)
Los SM internamente se dividen en 4 Processing Blocks o Subcores. Por ello cada subcore consta de:
* 16 CUDA Cores
* 16 ALUs
* 2 Tensor Cores
* Registros
* Cache L0 para instrucciones
Cada SM tiene su propia cache L1
La tarjeta gráfica incluye una cache L2
{{:clase:asir:fhw:2eval:arquitectura_nvidia.png|}}
{{:clase:asir:fhw:2eval:tu102.png?direct&600|}}
{{:clase:asir:fhw:2eval:streaming_multiprocessor.png?600|}}
{{:clase:asir:fhw:2eval:turing_gpu.jpg?600|}}
{{:clase:asir:fhw:2eval:nvidia_comparacion.png|}}
Mas información:
* {{ :clase:asir:fhw:2eval:nvidia-turing-architecture-whitepaper.pdf |nvidia-turing-architecture-whitepaper.pdf}}
* {{ :clase:asir:fhw:2eval:nvidia-ampere-ga-102-gpu-architecture-whitepaper-v2.pdf |}}
* {{ :clase:asir:fhw:2eval:nvidia-ampere-architecture-whitepaper.pdf |}}
* {{ :clase:asir:fhw:2eval:gtc22-whitepaper-hopper.pdf |}}
* {{ :clase:asir:fhw:2eval:cuda_c_programming_guide.pdf |}}
* [[https://hardzone.es/tutoriales/rendimiento/evolucion-arquitectura-nvidia-tesla-turing/|De Tesla a Turing, así ha cambiado NVIDIA su arquitectura en 14 años]]
* [[https://hardzone.es/reportajes/que-es/compute-units-gpu/|Tu GPU tiene cientos pero, ¿sabes cómo funcionan las Compute Units o SM?]]
* [[https://hardzone.es/tutoriales/rendimiento/nucleo-gpu-real/|¿Qué es el núcleo de una GPU y por qué AMD y NVIDIA nos engañan?]]
===== Tensor Core =====
Lo que hace un Tensor Core: Multiplicación mas Suma de Matrices.Se usan en inteligencia artificial (Redes neuronales).La aplicación mas utilizada para redes neuronales se llama TensorFlow. Un Tensor es como una matriz pero que puede tener mas de 2 dimensiones.
{{:clase:asir:fhw:2eval:tensor-core.png?600|}}
{{:clase:asir:fhw:2eval:turing-tensor-core_30fps_final_736x414.gif|}}
Mas información:
* [[https://www.anandtech.com/show/12673/titan-v-deep-learning-deep-dive/3|The NVIDIA Titan V Deep Learning Deep Dive: It's All About The Tensor Cores]]
* [[https://www.nvidia.com/en-us/data-center/tensor-cores/|NVIDIA Tensor Cores]]
* [[https://developer.nvidia.com/blog/programming-tensor-cores-cuda-9/|Programming Tensor Cores in CUDA 9]]
* [[https://hardzone.es/reportajes/que-es/cpu-dedicado-ia-tensor-core/|Procesadores dedicados para IA, ¿cuáles son y cómo funcionan?]]
===== Arquitecturas de GPU =====
Al igual que los procesadores, las gráficas también tienen distintas generaciones de microarquitecturas, aunque en este caso se les suele llamar directamente arquitecturas.
^ Año ^ Microarquitecturas ^ Serie ^ Ejemplo de modelo ^ GPU ^
| 2010 | [[https://en.wikipedia.org/wiki/Fermi_(microarchitecture)|Fermi]] | GeForce 400 | GTX 480 | GF100,GF104,GF106,etc. |
| 2012 | [[https://en.wikipedia.org/wiki/Kepler_(microarchitecture)|Kepler]] | GeForce 600 | GTX 680 | GK104,GK106,GK107,etc. |
| 2014 | [[https://en.wikipedia.org/wiki/Maxwell_(microarchitecture)|Maxwell]] | GeForce 900 | GTX 980 Ti | GM107,GM108 |
| 2016 | [[https://en.wikipedia.org/wiki/Pascal_(microarchitecture)|Pascal]] | GeForce 10 | GTX 1080 Ti | GP100,GP102,GP104,etc. |
| 2017 | [[https://en.wikipedia.org/wiki/Volta_(microarchitecture)|Volta]] | //No es una gráfica// | Tesla V100 | GV100 |
| 2018 | [[https://en.wikipedia.org/wiki/Turing_(microarchitecture)|Turing]] | GeForce 20 | RTX 2080 Ti | TU102,TU104,TU106,etc. |
| 2020 | [[https://en.wikipedia.org/wiki/Ampere_(microarchitecture)|Ampere]] | GeForce 30 | RTX 3060 | GA100,GA102,GA104,etc. |
| 2022 | [[https://en.wikipedia.org/wiki/Hopper_(microarchitecture)|Hopper]] | //No es una gráfica// | [[https://www.nvidia.com/es-es/data-center/h100/|H100 Tensor Core]] y [[https://www.nvidia.com/es-es/data-center/h100cnx/|H100 CNX]] | GH100 y GH202 |
| 2023 | Lovelace | GeForce 40 | RTX 4060 | AD102, AD103, AD104, AD10 y AD107 |
NVIDIA ha sacaco junto con la arquitectura Hopper , una gama de [[https://www.nvidia.com/es-es/data-center/grace-cpu/|CPU llamada Grace]]. Y podemos comprar ambos productos juntos o separados:
* NVIDIA Grace CPU Superchip: Procesador ARM con 144 núcleos
* NVIDIA Grace Hopper: Procesador ARM Grace junto con gráfica Hopper.
NOTA: [[https://es.wikipedia.org/wiki/Grace_Murray_Hopper|Grace Hopper]] es el nombre de una mujer que ayudó a crear el lenguaje COBOL (Aun usado en bancos de todo el mundo).
Acuñó el termino //bug// además de muchos otro méritos.
* NVIDIA H100 Hopper
{{ :clase:asir:fhw:2eval:nvidia-h100-hopper-es-presentado-con-16896-nucleos-cuda_2.jpg?direct&600 |}}
* NVIDIA Grace CPU Superchip
{{ :clase:asir:fhw:2eval:grace-cpu-superchip-2c50-d.jpg?direct&600 |}}
* NVIDIA Grace Hopper
{{ :clase:asir:fhw:2eval:grace-2c50-d.jpg?direct&600 |}}
* [[https://www.nvidia.com/es-es/data-center/dgx-h100/|NVIDIA DGX H100]]: Sistema completo de NVIDIA. Mas información:{{ :clase:asir:fhw:2eval:nvidia-dgx-h100-datasheet.pdf |}}
{{ :clase:asir:fhw:2eval:nvidia-dgx-h100-og.jpg?direct&600 |}}
{{ :clase:asir:fhw:2eval:nvidia-presenta-los-aceleradores-pcie-hopper-gh100-dgx-h100-dgx.png?direct&600 |}}
===== Nombres =====
Los nombres de las tarjetas gráficas son las siguientes:
* GeForce: Para tarjetas gráficas que se usan en videojuegos
* Prefijo:
* GT: Gama Baja
* GTX: Gama alta
* RTX: Gama alta pero con trazado de rayos
* Generación: 2, 3, 4, 5, 6, 7, 8, 9, 10, 20
* Modelo:
* Gama Baja: 1, 2, 3
* Gama media baja: 5
* Gama media: 6
* Gama Alta: 7, 8 y 9
* Sufijo: Se añade el Ti si son aun mas potentes.
**Ejemplos:**
* RTX 2080 Ti
* Prefijo: RTX
* Generación: 20
* Modelo: 80
* Sufijo: Ti
* GT 630
* Prefijo: GT
* Generación: 6
* Modelo: 30
* GTX 960
* Prefijo: GTX
* Generación: 9
* Modelo: 60
Mas información:
* [[https://www.muycomputer.com/2018/11/20/tarjetas-graficas-nvidia-identificar/|Tarjetas gráficas de NVIDIA: como diferenciar e identificar cada gama y modelo]]
===== Memoria =====
Las tarjetas gráficas usan memoria RAM pero no es DDR sino otros dos tipos de memoria.
* Graphics Double Data Rate (GDDR):
* Hay 6 versiones (GDDR1, GDDR2, ... y GDDR6).
* Estandarizada por el JEDEC que es el mismo organismo que el de las DDR.
* Mas barata que la HBM por lo que a mismo precio tiene mas capacidad
* Mas lenta que una HBM
* Mayor consumo energético que una HBM
* Se calientan mas
* High Bandwidth Memory (HBM)
* Hay 3 versiones (HBM1, HBM2,... HBM4)
* Mas rápida que la GDDR.
* Menor consumo que la GDDR.
* Mas cara que la GDDR.
* Más difícil de fabricar que la GDDR.
* AMD usa HBM2 ya que necesita bajar el consumo aunque sea mas cara.
* HBM2 se usan en gráficas profesionales para servidores. La arquitectura Tesla de NVIDIA usa HBM2.
* Para algunas tarjetas gráficas, no es necesario tanto ancho de banda como ofrecen las memorias HBM
GDDR6X: Es una variación del GDDR6 que no sigue el estandar del JEDEC. Creada por Micron y NVIDIA. La arquitectura Ampere usa GDDR6X
En el artículo [[https://hardzone.es/noticias/tarjetas-graficas/problema-thermal-pads-rtx-3000/|Sin solución en el horizonte: NVIDIA, la GDDR6X y su temperatura en RTX]], vemos los problemas de temperatura de las RTX 3080 y RTX 3090. Estos problemas son inicialmente debidos a la mala calidad del Thermal pad pero también a que la memoria GDDR6X genera mas calor que la HBM2.
Mas información:
* [[https://hardzone.es/tutoriales/rendimiento/memoria-grafica-vram-gddr6x/|¿Por qué la memoria gráfica GDDR6X es superior a la GDDR6?]]
* [[https://hardzone.es/reportajes/comparativas/amd-nvidia-hbm3-vs-hbm2/|AMD y NVIDIA ya trabajan con HBM3, ¿cuánto mejora frente a HBM2?]]
* [[https://hardzone.es/tutoriales/rendimiento/delta-color-compression/|Así ahorra tu tarjeta gráfica ancho de banda con la VRAM en los juegos]]
===== Salida de video:Conectores =====
La salida de video es por donde la tarjeta gráfica saca la señal para el monitor.
Existen 5 conectores distintos en las tarjetas gráficas.
==== Antiguos ====
* VGA: El conector mas antiguo. La señal es analógica.
{{:clase:asir:fhw:2eval:vga.jpg?150|}}
* DVI: Es la evolución del VGA. La señal es digital pero tiene pines para sacar también la señal analógica del VGA.
{{:clase:asir:fhw:2eval:dvi.jpeg?150|}}
==== Modernos ====
* HDMI: La señal es digital pero ademas de la señal de video soporta tambien Audio , Ethernet y hasta la pulsación de teclas de un mando a distancia. Tiene un coste por licencia.
* DisplayPort: Es similar al HDMI pero está libre del coste por licencia (Excepto la parte del DRM). Soporta mas velocidad y además permite varios monitores en el mismo cable.
* USB-C: Es solo la forma del conector pero internamente se envía la información en DisplayPort.
{{:clase:asir:fhw:2eval:video-port-new.jpg|}}
De cara a ver las velocidades de cada estándar hay que tener en cuenta la codificación:
* HDMI 2.1: Codificación 16b/18b
* DisplayPort 2.0: Codificación 128b/132b
¿Recuerdas algo similar en los discos SATA?
Mas información:
* [[https://www.wikiversus.com/gaming/hdmi-vs-displayport/|HDMI Vs. DisplayPort - ¿Cuál es mejor para gaming?]]
* [[https://www.xataka.com/basics/displayport-vs-hdmi-cuales-diferencias|DisplayPort vs HDMI: cuáles son las diferencias]]
* [[https://hardzone.es/reportajes/comparativas/diferencias-conectores-dvi/|Conectores de vídeo DVI-A, DVI-D y DVI-I, ¿qué diferencias hay?]]
* [[https://hardzone.es/tutoriales/componentes/displayport-2-caracteristicas-dispositivos/|DisplayPort 2.0, así es el nuevo estándar para pantallas 8K y 16K]]
===== Temperatura =====
Al igual que los procesadores, las gráficas también desprenden calor.Dicho calor hay que disiparlo y para ello las tarjetas gráficas incluyen disipadores y/o ventiladores.
Los parámetros que se especifican para saber el calor que generan son los siguientes:
* Thermal Design Parameter (TDP): GPU
* Total Graphic Power (TGP): GPU+RAM+PCB
* Total Board Power (TBP): GPU+RAM+PCB+Ventiladores+leds
Realmente el que nos interesa es el TBP pero como eso depende del ensamblador de la tarjeta , el fabricante de la GPU solo puede dar el TGP. Sin embargo da diferencia entre el TGP y TBP es muy poca ya que el ventilador o los leds generan muy poco calor.
Un TPD o similar mas alto no debe implicar obligatoriamente un mayor consumo eléctrico. Sin embargo al igual que pasaba con las fuentes de alimentación, un TPD mas alto si que implica una peor eficiencia energética. Eso significa que un TPD alto hace que "tiremos" dinero en electricidad al usarse dicha electricidad para generar calor.
Mas información:
* [[https://hardzone.es/tutoriales/rendimiento/tdp-tbp-tgp-tarjeta-grafica/|En una tarjeta gráfica, ¿en que se diferencian el TDP, TBP y TGP?]]
* [[https://hardzone.es/reportajes/que-es/tgp-tarjeta-grafica-gpu/|Conoces el TDP de tu gráfica pero, ¿sabes cuál es su TGP?]]
* [[https://hardzone.es/tutoriales/rendimiento/amd-tbp-nvidia-tgp-gpu-diferencia/|AMD habla de TBP y NVIDIA de TGP en sus GPU, ¿cuál es la diferencia?]]
===== Ejercicios =====
==== Ejercicio 1 ====
Lee los siguientes artículos para comprobar que entiendes los conceptos que especifican las tarjetas gráficas:
* [[https://hardzone.es/reportajes/comparativas/rtx-3080-vs-rtx2080-ti-arquitectura/|RTX 3080 vs RTX 2080 Ti, ¿merece la pena el cambio de arquitectura?]]
* [[https://hardzone.es/noticias/tarjetas-graficas/rtx-3050-ti-especificaciones-benchmarks/|Estás son las especificaciones de las RTX 3050 de NVIDIA]]
* [[https://hardzone.es/noticias/tarjetas-graficas/nvidia-rtx-3080-ti-fecha-lanzamiento/|Filtrada la fecha de lanzamiento y especificaciones de la RTX 3080 Ti]]
* [[https://hardzone.es/noticias/tarjetas-graficas/nvidia-lovelace-posible-arquitectura/|Esta podría ser la arquitectura de las GPUs NVIDIA RTX 4000 Lovelace]]
==== Ejercicio 2 ====
Rellena la siguiente tabla:
^ ^ RTX 2080 Ti ^ RTX 3060 ^
| Nº de Streaming Multiprocessor (SM) | | |
| Nº total de CUDA Cores | | |
| Nº de CUDA Cores en cada SM | | |
| Nº total de Tensor Cores | | |
| Nº de Tensor Cores en cada SM | | |
| Nº total de RTX Cores | | |
| Nº de RTX Cores en cada SM | | |
| Tamaño de la memoria | | |
| Tipo de la memoria | | |
| TGP | | |
| Precio | | |
==== Ejercicio 3 ====
Lee el siguiente artículo. [[https://hardzone.es/tutoriales/rendimiento/rendimiento-gpu-bus-memoria/|¿Cuánto rendimiento puede ganar una GPU dependiendo del bus de su memoria?]]
Mira si coinciden los cálculos hechos en el artículo de la AMD Radeon RX 5700 con los datos de de la siguiente página:
* [[https://www.techpowerup.com/gpu-specs/radeon-rx-5700.c3437|AMD Radeon RX 5700 Specs - TechPowerUp GPU Database]]
Ahora comprueba si coinciden los cálculos hechos en el artículo de la NVIDIA GeForce GTX 1060 con los datos de de la siguiente páginas:
* [[https://www.techpowerup.com/gpu-specs/geforce-gtx-1060-6-gb.c2862|NVIDIA GeForce GTX 1060 6 GB Specs - TechPowerUp GPU Database]]
* [[https://www.techpowerup.com/gpu-specs/geforce-gtx-1060-3-gb.c2867|NVIDIA GeForce GTX 1060 3 GB Specs - TechPowerUp GPU Database]]
==== Ejercicio 4 ====
Busca 10 tarjetas gráficas de diversos precios y que estén en la siguiente página [[https://www.videocardbenchmark.net/gpu_list.php|PassMark Software - Video Card (GPU) Benchmark Charts - Video Card Model List]]. Anota para cada una de ellas, el valor de la columna "Passmark G3D Mark".
Haz una gráfica de **puntos** con lo siguiente.
* El eje X mostrará el valor de "Passmark G3D Mark"
* El eje Y mostrará el precio de la tarjeta gráfica.
* Demás en cada punto de la gráfica debe indicarse el nombre de la tarjeta gráfica a la que corresponde.
Únicamente viendo la gráfica y basándote en la relación calidad/precio (Passmark G3D Mark y precio), explica:
* Que tarjeta/s comprarías teniendo un alto presupuesto
* Que tarjeta/s comprarías teniendo un bajo presupuesto
* Que tarjeta/s **NUNCA** comprarías teniendo un alto presupuesto
* Que tarjeta/s **NUNCA** comprarías teniendo un bajo presupuesto
Ejemplo de gráfica:
{{:clase:asir:fhw:2eval:tarjetas_graficas.png|}}
Intentar que haya tarjetas con un precio elevado pero con poco rendimiento y/o viceversa. Lo digo porque así se verá cual merece la pena y cual no.Los precios no los debéis sacar de la propia página de PassMark sino en tiendas "normales" como amazon españa, pccomponentes, app ,etc. Es decir en sitios donde realmente podéis comprar la tarjeta.No hace falta que tengan venta online si son tiendas de aquí de Valencia. La idea no es tener los mejores precios sino aprender a comparar precios. Así que si veis en alguna tiene un precio excesivamente caro para su rendimiento es mejor que la pongáis
Para todas las gráficas recordar que siempre hay que incluir lo siguiente:
* Títulos de los ejes
* Unidades de los ejes
* Título de la gráfica
* A ser posible que el eje Y empiece en 0
* No usar colores estrambóticos
==== Ejercicio 5 ====
Haz una gráfica de **puntos** de tarjetas NVIDIA con lo siguiente.
* El eje X mostrará el número total de CUDA Cores
* El eje Y mostrará el valor de "Passmark G3D Mark"
* Demás en cada punto de la gráfica debe indicarse el nombre de la tarjeta gráfica a la que corresponde.
Indica si hay relación entre los CUDA Cores y el "Passmark G3D Mark"
==== Ejercicio 6 ====
Rellena para la siguiente tabla, el Nº de CUDA cores que tiene cada modelo de tarjeta gŕaficas
^ Modelo ^ Nº CUDA Cores ^
^ GeForce GTX 1060 | |
^ GeForce GTX 1070 | |
^ GeForce GTX 1080 | |
^ GeForce RTX 2060 | |
^ GeForce RTX 2070 | |
^ GeForce RTX 2080 | |
^ GeForce RTX 3060 | |
^ GeForce RTX 3070 | |
^ GeForce RTX 3080 | |
Muestra ahora esa misma información en la siguiente tabla:
^ ^ Generación ^^^
^ ^ GeForce 10 (Pascal) ^ GeForce 20 (Turing) ^ GeForce 30 (Ampere) ^
^ Modelo 60 | | | |
^ Modelo 70 | | | |
^ Modelo 80 | | | |
¿Se cumple esa frase que se dice que una tarjeta gráfica de una generación es como la siguiente del modelo anterior?
Es decir que una GeForce GTX 1070 es como GeForce RTX 2060.
==== Ejercicios 7 ====
Rellena la siguiente tabla:
^ Estándar ^ Velocidad (Gb/s) ^ Codificación ^ Ratio ^ Velocidad útil (Gb/s) ^
| HDMI 2.1 | | | | |
| DisplayPort 2.0 | | | | |