¿Por qué las CPU son más importantes en el renderizado final que las GPU?

Esta es una respuesta muy “depende”, pero:

Resulta que muchas GPU, especialmente en los primeros días, diseñadas para renderizar para juegos, en realidad pueden tomar atajos al renderizar gráficos basados ​​en DirectX o OpenGL. Hubo sitios web que solían comparar capturas de pantalla de diferentes GPU (o controladores, que también hacen una gran diferencia) con diferentes configuraciones de calidad y controladores, en comparación con el procesador de referencia “DirectX” o OpenGL, que está basado en la CPU (por lo que se ejecuta en una plataforma común independiente de las GPU). Estos atajos conducen a mayores velocidades de cuadros, a expensas de la calidad de la imagen, es decir, los artefactos de visualización. Sin embargo, para fines de juego, dado que FPS es clave, un jugador no notará un poco menos de calidad de imagen o un artefacto que solo puede aparecer de manera más obvia por unos pocos cuadros, de 60 FPS.

Sin embargo, esto sin duda se notará para otros fines de animación en 3D, como si esos cuadros van a ser “pausados” y estudiados o simplemente necesitan verse prístinos.

Otra cosa es la precisión. Incluso si la GPU se usa para ejecutar un sombreador de píxeles para renderizar, para hacer varios efectos más allá de las capacidades expuestas en DirectX / OpenGL, resulta que la GPU solo puede ser más rápida o capaz de matemática de punto flotante de precisión de 16 bits o 32 bits (FP16 / FP32). En particular, la GPU puede no ser, o es mucho más lenta, en matemática de precisión de 64 bits (FP64) que en FP32. Por ejemplo;
Explicar el rendimiento de FP64 en GPU

Dice que el FP64 es 1/24 del rendimiento de FP32. Está ahí, pero nadie usará FP64 para jugar. Solo FP32. Ahora para los juegos, cambiar la velocidad por la calidad está bien. Pero no para renderizar.

También resultó que las GPU anteriores ni siquiera implementaban el llamado punto flotante compatible con IEEE 754, o no eran tan confiables en sus cálculos de punto flotante. Este tipo de medios podría haber en algunos casos, más error en el cálculo de las matemáticas de coma flotante que lo permitido por esa especificación. Estos errores sutiles pueden conducir a pequeños artefactos en los renders. Lo hicieron para ser rápidos y nuevamente no fue súper crítico para los juegos. Ahora, como las GPU también se usan para el cálculo, es importante mantener cierta precisión en el cálculo, por lo que las GPU modernas son mucho mejores en este sentido.

Y también hay un problema de memoria. Las GPU solo se procesan rápidamente si todo encaja en su RAM de video (VRAM), que está directamente conectada a la GPU. Los chips VRAM y la interfaz están diseñados para una velocidad superior a la capacidad, por lo que, si bien normalmente se ven entre 16 y 64 GB de DRAM en una CPU, las GPU tienen más de 2 a 8 GB de VRAM (y esto casi siempre no es usuario) expandible). Una vez que esta VRAM se agota, el controlador de la GPU debe cambiar a la DRAM (de la CPU), en ese caso ahora el límite es la interfaz PCIe a la GPU, que es mucho más lenta que la interfaz de la CPU a su propia DRAM.

Para los renderizados intermedios, la velocidad es importante, por lo que es más probable que el renderizador use el controlador de la GPU para renderizar, por lo que puede haber artefactos sutiles o una precisión menor para las matemáticas, y también las texturas y tales tienen que encajar en la VRAM disponible.

Para los renders finales, la calidad es importante. Si el problema de capacidad VRAM domina, o si se necesita FP64, puede resultar para todo el hardware muy capaz en la GPU, la CPU puede tener un FP64 más rápido (o es el único dispositivo capaz), y tiene mucho más DRAM en su eliminación, además, tiene un ancho de banda más directo para manejar el tamaño de la imagen renderizada final y la calidad requerida.

Esto depende completamente de su motor de renderizado.

Algunos motores de render tienen implementaciones excelentes para el procesamiento de GPU. Algunos motores de renderizado no están bien optimizados para GPU o carecen de la implementación de características específicas para el renderizado de GPU.

Hay granjas de CPU y GPU para el renderizado final, pero depende de su motor.

Toco esto más (con algunas muestras) en esta respuesta: la respuesta de Jae Alexis Lee a ¿Debería uno invertir en CPU o GPU para renderizar CGI?

Pero la verdad es que si tienes un punto final que no está bien optimizado para el renderizado de GPU, entonces podría darte una pila de Titan-Z y todavía no te importaría porque los resultados no serían lo que necesitas. Del mismo modo, si tuviera algo como el Octane Render de Otoy en su flujo de trabajo, si le ofreciera una estación de trabajo dual Xeon E5 2699 v3, simplemente se reiría porque las pilas de núcleos de CPU no le harían ningún bien.

Su flujo de trabajo determinará si los núcleos de CPU o GPU son más importantes para su producto final y no hay una respuesta verdadera que se ajuste a todos los flujos de trabajo.

La representación es exactamente para lo que sirve una GPU. La CPU se usa principalmente para manejar las necesidades de memoria de la computadora mientras se procesa. La velocidad en la representación es una de las cosas más incentivadoras de CPU que puedes hacer, pero la GPU es mucho más necesaria.

Renderizado (gráficos por computadora)

Hmmm Esto parece ir en contra de las granjas de renderizado masivo que usan pilas de GPU para el renderizado final.