Te contamos de manera general la diferencia entre CPU y GPU, así como la importancia de cada núcleo de las GPU de NVIDIA.
Han pasado muchos años desde que todo el trabajo de cálculo del PC se lo llevaba sólo la CPU. No obstante, empresas como NVIDIA o AMD han desarrollado sus propias versiones de tarjetas (GPU) dedicadas al procesamiento y no solamente gráfico.
Hoy en día una GPU es probablemente uno de los componentes más significativos del computador, en lo que se refiere a juegos de altas prestaciones. De hecho, su sigla se refiere a Unidad de Procesamiento Gráfico; entendamos que cuando se acuñó el concepto de GPU, no era lo mismo a lo que se refiere hoy en día; Sin embargo, esto es una cuestión para otro artículo.
Antes de entrar en materia, primero veremos de manera breve lo que es una GPU y cómo se diferencian de las clásicas CPUs de Intel o AMD.
Primero que todo, la CPU es la Unidad Central de Procesamiento (en inglés Central Processing Unit), y principalmente se usa para diversas tareas que no tengan relación con los procesos gráficos, de hecho, no está ideada para este fin. La CPU está pensada para desarrollar tareas en serie.
Por su parte, las GPU están intrínsecamente diseñadas para realizar labores de procesamiento gráfico en dos y tres dimensiones. Además, GPU significa Unidad de Procesamiento Gráfico (del inglés Graphics Processing Unit).
Debido a su capacidad para desarrollar, de manera paralela, múltiples tareas de punto flotante. En sí, el papel de la GPU no se limita solo a los juegos, también es la encargada de procesar todo el entorno gráfico del sistema operativo, así como los videos o imágenes que pudieses visualizar.
La imagen anterior muestra esquemáticamente que la GPU tiene cientos de núcleos, donde cada uno de ellos ejecutan una tarea específica, que, si los unes a todos, obtienen las operaciones en paralelo que ya hemos mencionado. En cambio, las CPU’s solo tienen pocos núcleos o cores destinados a tareas secuenciales generales.
Nota: Un punto flotante se refiere al tipo de notación científica empleada por equipos de cómputo para representar números reales muy grandes y muy pequeños, de manera compacta (Ver la siguiente tabla en la fila destacada). Este tipo de dato puente tener valores enter -3.425035·10^38 hasta +3.425035·10^38.
En el siguiente video de Los Cazadores de Mitos muestran la diferencia entre una GPU y una CPU, mostrado el trabajo paralelo y en serie respectivamente.
Las tarjetas NVIDIA de los últimos años se caracterizan por tener tres diferentes tipos de núcleos, que desglosaremos a continuación:
Partiendo por los núcleos CUDA, la palabra es un acrónimo de Compute Unified Device Architecture que referencia la plataforma GPGPU de la marca. Los CUDA cores permiten la ejecución de tareas gráficas, así como tareas de uso general, utilizando su potencia de cómputo en paralelo, donde las CPUs son menos efectivas.
De manera cotidiana cumplen tareas en el área de renderizado 3D, modelado 3D, resolver situaciones de iluminación y sombras en escenas de videojuego, etc.
Si vamos a la raíz de lo conceptual de los núcleos, el cómo los llama NVIDIA estaría incorrecto, ya que lo que hacen los CUDA cores es realizar cálculos matemáticos y lógicos, lo que en inglés corresponde a Unidad Aritmético Lógicas (ALU).
Lo que realmente corresponde a un núcleo, sería lo que NVIDIA llama SM o Streaming Multiprocessor (ver siguiente imagen). De hecho, si vemos una tabla de especificaciones de la serie RTX nos encontramos que la GeForce RTX 3080 TI tiene 10.240 núcleos CUDA, solo tendría 80 núcleos reales; lo mismo ocurre con la 3090, que si bien tiene 10.496 CUDA cores, solamente son 82 núcleos reales.
Finalmente, los CUDA cores son lo que se conoce en arquitectura moderna de microprocesadores, una SIMT (Single Instruction, Multiple Threads o Intrusión única, múltiples hilos). Es decir, es un modo de ejecutar tareas de cómputo en paralelo, combinadas en una instrucción única.
Además, es el cerebro detrás del resto de los núcleos que tienen las GPU's de NVIDIA, puesto que son los encargados de dar las instrucciones a los núcleos RT y Tensor.
Los núcleos RT son los transistores por los cuales NVIDIA cambió el clásico nombre de sus tarjetas gráficas GTX, por la nueva serie RTX. Estas últimas disponen de la tecnología Ray Tracing o Trazado de Rayos de NVIDIA.
En sí, los núcleos RT son aceleradores de hardware que realizan comprobaciones de las pruebas de rayo; entendamos que estos rayos corresponden al trazado de los haces de luz en una escena.
Los núcleos RT ejecutan el cálculo de la intersección que se produce entre los rayos y los elementos que componen la escena que estamos viendo en nuestros monitores. Esta verificación requiere entre 12 y 30 operaciones aritméticas de punto flotante (cada una de ella), que en esencia corresponde al Ray Tracing, que trataremos profundamente en otra publicación.
Finalmente, este tipo de núcleos sólo pueden utilizarse para el cálculo de la intersección de los rayos o la aceleración del Ray Tracing.
En el siguiente video puedes ver la comparación de la capacidad del Ray Tracing activo, lo que, con respecto a hardware, correspondería a que los núcleos RT estén operativos o no.
Estos núcleos de NVIDIA están diseñados para ejecutar operaciones con datos agrupados en tensores o matrices. Este trabajo facilita enormemente las labores que están relacionadas con grandes matrices de datos en 2 y 3 dimensiones llamadas tensores.
Los núcleos Tensor funcionan muy bien con Inteligencia Artificial (IA) de tipo Deep Learning o también llamadas redes neuronales convolucionales, que fueron creadas como un modelo matemático que se acerca al funcionamiento de nuestro cerebro.
Una red neuronal convolucional se subdivide en al menos tres niveles de conceptualización: El primer nivel es capaz de distinguir objetos simples basados en sus bordes o colores; el segundo nivel puede diferenciar mezclas entre los bordes y colores de diferentes objetos, y el último nivel se fija en lo que estamos buscando detectar.
Este tipo de redes por lo general se mezclan con redes neuronales antagonistas, en la que una genera patrones que se buscan, basándose en una biblioteca de información; la segunda y antagonista es la encarga de discernir si el patrón generado es correcto o no.
Esta es una de las razones por las que NVIDIA ha desarrollado su propia línea negocios basada en Inteligencia Artificial.
La siguiente figura muestra una idea matricial de cómo funciona una red neuronal convolucional:
Finalmente, los Tensor cores son un hardware dedicado a realizar procesos matemáticos que agrupan los resultados numéricos en arreglos matriciales que tienen sentido cuando están unidos según ciertas reglas en los tensores.
Por ejemplo, si queremos almacenar los datos de un vehículo que se mueve de A a B, con cierta velocidad, en un tiempo determinado. Esta información se puede almacenar en dos arreglos:
Vector de inicio:
Vector de término de desplazamiento:
Estos dos arreglos se pueden dejar en una matriz; luego si tenemos más móviles desplazándose, podemos agrupar una matriz para cada vehículo, que al unir estas matrices tendremos un Tensor. También se pueden unir o mezclar tensores, para obtener otros más grandes.
En consecuencia, lo que hacen los núcleos tensores, es resolver el entramado de datos que se generan con estos tensores, acelerando el proceso de cálculo.
El siguiente video de NVIDIA Developer muestra una breve explicación de los Tensor cores en 3:39 minutos.
Resumiendo:
¿Te interesa que tratemos en profundidad cada tema descrito por separado?