La semana anterior, escribí un artículo sobre especificaciones extrañas de las GPU. Aunque en él se exponían algunas de las partes más complicadas de las especificaciones de las tarjetas de vídeo, varios lectores se han mostrado contrariados con el artículo, diciendo que podría haber sido más completo. Por ello, sería conveniente responder en este artículo a más preguntas sobre los componentes de la tarjeta gráfica que no siempre fueron respondidas por aquel artículo. Sin más preámbulos, he aquí algunas respuestas a las preocupaciones más acuciantes sobre las especificaciones de las tarjetas de vídeo que no parecen estar totalmente discutidas en términos que todo el mundo pueda entender en Internet.
¿Qué es CUDA y qué es un núcleo CUDA?
LaArquitectura Unificada de Cálculo (CUDA) es una característica de muchas de las nuevas tarjetas gráficas de Nvidia que permite al ordenador utilizar una parte de la GPU (o quizás la GPU completa) como “asistente” del procesador. Las GPUs son mucho más potentes que los ordenadores, pero su arquitectura ha estado históricamente más optimizada para el cálculo de rangos de dibujo y polígonos (que es la razón por la que se incluyen en las tarjetas gráficas en primer lugar). CUDA transforma la GPU en una máquina matemática capaz de procesar números con gran rapidez, utilizando la enorme potencia de la GPU para otras cosas además de para renderizar y mostrar gráficos en la pantalla.
En el artículo al que me refería al principio, describía que SETI@Home se beneficia de CUDA al utilizar las tarjetas gráficas para realizar estimaciones. Éste es simplemente un ejemplo de cómo CUDA puede utilizarse para hacer cosas fantásticas. CUDA también puede utilizarse para transcodificar vídeo (convertirlo de un formato a otro) utilizando un códec especial que interactúa con el hardware. El codificador de Nvidia se denomina NVENC, y es una forma eficaz de codificar vídeo mucho más rápidamente utilizando el motor de vídeo de la tarjeta gráfica en lugar de agotar la CPU. Si eres un desarrollador, y estás interesado en que tu programa conste de NVENC, puedes ver los recursos de Nvidia aquí.
Bien, ahora entendemos qué es CUDA. ¿Qué pasa con los núcleos CUDA?
Un núcleo CUDA es un segmento de la GPU que puede ser utilizado para los propósitos de CUDA. Es la pieza de la GPU que algunos programas de monitorización llaman “motor de vídeo”. Cada núcleo es una pequeña pieza de la arquitectura de toda la GPU que puede ser utilizada tanto para la realización de 3D convencionales como para funciones específicas de CUDA. En la mayoría de las tarjetas gráficas, toda la GPU está disponible para trabajar con CUDA. Esto implica que la variedad de núcleos CUDA en la GPU especifica de hecho cuántos núcleos tiene toda la GPU.
¿Por qué las GPU tienen muchos núcleos?
Mientras que las CPU actuales suelen tener entre 4 y 8 núcleos, hay tarjetas gráficas con más de 5.000 núcleos. ¿A qué se debe esto, y por qué las CPU no pueden tener una cantidad tan ridícula de núcleos?
La GPU y la CPU tienen funciones diferentes. Mientras que una CPU reacciona al código del dispositivo para comunicarse con numerosas piezas de hardware del ordenador, la GPU está hecha para un solo propósito en particular: se espera que renderice polígonos en las impresionantes escenas que vemos en los entornos acelerados en 3D y que después equipare todo esto en una imagen 60 veces o más por segundo. Eso es mucho para una CPU, pero dado que la GPU tiene procesadores de polígonos compartimentados, puede dividir el trabajo entre todos sus núcleos para renderizar un entorno visual en unos pocos milisegundos.
Ahí es donde se encuentran los núcleos. Una GPU necesita todos esos núcleos para dividir trabajos enormes en trozos diminutos, cada núcleo procesando su propia parte de la escena de forma individual. Las aplicaciones que utilizan CPU (como tu navegador web) no se benefician de tener un número tan enorme de núcleos, a menos que cada núcleo tenga la fuerza muscular de todo un sistema de procesamiento. Tu navegador web cuenta con un acceso rápido a los detalles en contraposición a la compartimentación de las tareas. Cuando llenas una página web o lees un archivo PDF, sólo necesitas un flujo de procesamiento para cargar todo eso.
Más RAM hace que una tarjeta de vídeo sea mejor?
La RAM es un poco un lugar gris inusual con las tarjetas de vídeo. Si bien es bueno tener la mayor cantidad de RAM posible, también hay que ser capaz de utilizar toda esa RAM
. Una tarjeta de vídeo con 1024 MB de RAM y un bus de 192 bits de ancho va a llevar a cabo mucho mejor que una tarjeta de vídeo con 2048 MB de RAM y el mismo bus.Como he explicado en el artículo anterior, la tarjeta de vídeo de 2048 MB experimentará algo llamado “embotellamiento del ancho de banda” debido a que el bus (la vía por la que viaja la información) no es lo suficientemente amplio como para llevar una cantidad suficiente de datos en un breve espacio de tiempo.
En pocas palabras, no, más RAM no es necesariamente mucho mejor si la tarjeta de vídeo no tiene un bus amplio. Aquí está mi guía para el ancho correcto del bus: Tu tarjeta de video debe tener un óptimo de ocho veces la cantidad de RAM en megabytes como el número de bits en el bus. Por ejemplo, una tarjeta de 1024 MB debe tener al menos un bus de 128 bits (1024/ 8 = 128). Por tanto, para una tarjeta de 2048 MB, aconsejo un mínimo