Núcleos CUDA: cómo funcionan en las tarjetas gráficas de NVIDIA

Núcleos CUDA: cómo funcionan en las tarjetas gráficas de NVIDIA

Juan Diego de Usera

Todos los usuarios saben que las tarjetas gráficas de NVIDIA tienen en su interior, desde el año 2006, núcleos CUDA. Este tipo de núcleos son la clave para el excepcional salto de rendimiento que se produjo, en su momento, desde la tradicional arquitectura mono bloque a la actualidad. Pero ¿qué es uno de estos núcleos y cómo funcionan?

Simplificando al máximo, un núcleo CUDA (Compute Unified Device Architecture), también llamado CUDA Core o CUDA Cores, es como un mini procesador que se encarga de cierto tipo de instrucciones, que suelen poder ejecutarse de manera paralela. Y nos vamos a explicar un poco mejor.

Hasta la llegada de las NVIDIA GeForce GTX 8800GTS, las instrucciones que se requerían para procesar una imagen, se debían de operar de una manera muy similar a como se procesan en la CPU del sistema cuando tenían solo núcleo: en serie, mediante una pipeline, a través de la que las instrucciones se procesaban mediante operaciones matemáticas, hasta llegar al final. Pero todo esto cambia con la introducción las GeForce GTX 8800GTS. Estas tarjetas gráficas, las primeras en las que se implementaron este tipo de núcleos y de arquitectura, se basaron en las primeras tarjetas Tesla, que incorporaron por primera vez USA (Unified Shader Architecture), es decir, un tipo de arquitectura en el que todas las unidades para shaders son capaces de realizar cualquier tipo de instrucción que se les asigne.

Con los núcleos CUDA, la paralelización de instrucciones es la clave

En general, CUDA es un tipo de plataforma, desarrollada por NVIDIA, para poder realizar la programación de las tareas que antiguamente llevaban a cabo, inicialmente el procesador para, más adelante, el núcleo gráfico de la tarjeta. La programación de los núcleos se realiza en lenguajes como C, C++ y Fortram, aunque también soporta el empleo de otros lenguajes como OpenACC y OpenCL

La gran ventaja que presentan los núcleos CUDA sobre las arquitecturas anteriores es la posibilidad de paralelizar las instrucciones de los shaders, consiguiendo imágenes mucho más realistas con bastante menos trabajo, por parte del sistema, por ciclo de reloj. Este tipo de instrucciones tan paralelizables, permiten que los núcleos CUDA se puedan emplear, no solo en el entorno profesional de los gráficos, sino también dentro de operaciones de computación mucho más avanzadas. Por ello, llevan ya tiempo empleándose en máquinas de tipo Deep Learning para Inteligencia Artificial, donde es muy importante procesar millones de datos por ciclo de reloj, para la obtención de resultados en tiempo real (o el menor tiempo posible, dependiendo de la tarea asignada, obviamente).

Algo a tener en cuenta con este tipo de núcleos es que, una mayor cantidad de ellos solo equivale a un mayor rendimiento de la tarjeta gráfica entre arquitecturas similares. Es decir, si una gráfica de núcleo Kepler tiene 200 núcleos, no por ello va a ser más rápida que una gráfica, con núcleo Pascal, que tenga esos mismos 200 núcleos. Tampoco hay correlación real entre este tipo de núcleos y los que emplea AMD en sus tarjetas gráficas.

¡Sé el primero en comentar!