From BlenderWiki

Jump to: navigation, search

Procesamiento usando la GPU

Introducción

El procesamiento con GPU hace posible usar la tarjeta gráfica para este fin, en vez de la CPU. Esto puede acelerar el procesamiento, ya que las GPUs modernas están diseñadas para realizar un gran número de cálculos numéricos. Por otro lado, éstas también tienen algunas limitaciones para procesar escenas complejas, debido a su memoria más limitada y a una cuestión de interactividad cuando se usa la misma tarjeta gráfica para el monitor y para el procesamiento.

Cycles tiene dos modos de procesamiento usando la GPU: a través de CUDA, que es el método preferido por las tarjetas gráficas de nVidia y OpenCL, que pretende dar soporte de procesamiento a las tarjetas gráficas de AMD/ATI. No obstante, esta implementación se encuentra aún en una etapa experimental y en la actualidad solo soporta el procesamiento de imágenes con oclusión ambiental.

Configuración

Para activar el procesamiento usando la GPU, ir a Preferencias de usuario..., a la pestaña Sistema y seleccionar el Dispositivo de cálculo a usar. Luego, para cada escena es posible configurar el uso de procesamiento usando CPU o GPU en las propiedades del panel Procesar.

CUDA

Se soporta el sistema CUDA de nVidia para el procesamiento con GPU en tarjetas gráficas de nVidia. Están soportadas las tarjetas a partir de la serie GTX 2xx (Shader Model 1.3), sin embargo se recomienda usar tarjetas de la serie GTX 4xx o GTX 5xx (Shader Model 2.x), ya que solo éstas logran una ganancia considerable de velocidad y las anteriores suelen ser más lentas que utilizar el procesamiento con CPU. Las tarjetas con Shader Model 1.3 tampoco soportan algunas características de Cycles, ver más abajo.

Cycles requiere que se instalen controladores recientes, para todos los sistemas operativos. Asegurarse de descargar la versión de Blender que corresponde al sistema operativo del equipo, es decir, descargar Blender de 64 bits para sistemas operativos de 64 bits.

Lista de tarjetas CUDA con su Shader Model

Tarjetas antiguas

Para Mac y Linux, es posible compilar los núcleos en tiempo de ejecución para las tarjetas que no están soportadas oficialmente. Las tarjetas GeForce 8xxx y 9xxx no están incluidas en la versión oficial, pero podrían funcionar habilitando las Características experimentales.

Para esto se debe instalar el CUDA toolkit version 4.0 (versión de 64 bits). Otras versiones podrían funcionar, pero no están soportadas. La primera vez que se hace un procesamiento, se debe compilar el kernel para la arquitectura correspondiente de GPU. Ya que Cycles es bastante complejo en comparación con un núcleo de GPU corriente, la compilación puede durar de 40 segundos a varios minutos y puede requerir hasta 2GB de memoria, dependiendo del modelo de tarjeta gráfica.

Características que no aparecen en el Shader Model 1.x

Debido a las limitaciones del hardware, compilar un núcleo con todas las características habilitadas no es posible para estas tarjetas. Actualmente carecen de:

  • Sombras transparentes
  • Muestrear como lámpara para texturas del Universo
  • Oclusión ambiental
  • Pasadas de procesamiento

OpenCL

Todavía no se ha terminado su implementación, figurando como característica experimental.

El procesamiento usando OpenCL todavía no está soportado por completo, pero se está trabajando en ello para que se puedan soportar más tarjetas gráficas. En la actualidad solo está soportado un procesamiento de tipo arcilla, debido a que el núcleo no puede ser compilado completamente con el compilador de OpenCL de AMD.

La primera vez que se hace un procesamiento, el núcleo debe compilarse para la arquitectura de la GPU correspondiente. Ya que Cycles es bastante complejo comparado con un núcleo de GPU típico, la compilación puede llevar de 40 segundos a varios minutos y puede requerir hasta 2GB de memoria, dependiendo del modelo de la tarjeta gráfica.

Se requiere la versión 1.1 de OpenCL o una superior.

FAQ - Preguntas frecuentes

¿Por qué Blender no responde mientras dura el procesamiento?

Mientras la tarjeta gráfica está procesando, puede que la interfaz de usuario no se redibuje, lo que hace que ésta no responda interactivamente. Se puede intentar evitar este problema dando el control a la GPU tan amenudo como sea posible, pero no se puede garantizar una interacción suave, especialmente con escenas complejas y pesadas. Esta es una limitación de la tarjeta gráfica para la que no existe solución, aunque en el futuro esto podría mejorar.

Si fuera posible, lo mejor es instalar más de una GPU, de manera que se use una para la pantalla y otra (u otras) para el procesamiento.

¿Por qué una escena que se puede procesar con la CPU no lo hace con la GPU?

Puede haber múltiples causas, pero la más común es que la tarjeta gráfica no tenga suficiente memoria. En la actualidad solo se pueden procesar escenas que quepan en la memoria de la tarjeta gráfica y normalmente ésta es más pequeña que la del equipo. Hay que tener en cuenta, por ejemplo, que imágenes de textura de 8k, 4k, 2k y 1k consumen respectivamente 256MB, 64MB, 16MB y 4MB de memoria.

Se pretende agregar al sistema soporte para escenas mayores que la memoria de la GPU, pero ésto no se logrará pronto.

¿Puedo usar múltiples GPUs para procesar?

Sí, yendo a Preferencias de usuario...  » Sistema  » Dispositivo de cálculo y configurándolo a gusto.

¿Incrementarían multiples GPUs la memoria disponible?

No, cada GPU solo puede acceder a su propia memoria.

¿Cuál procesa más rápido, nVidia o AMD, CUDA u OpenCL?

En la actualidad nVidia con CUDA está procesando más rápido. No existe una razón fundamental por la que esto debería ser así, ya que no se está usando ninguna característica específica de CUDA, pero el compilador parece estar más maduro, y soporta mejor núcleos grandes. El soporte de OpenCL aún se está desarrollando y no ha sido muy optimizado, ya que todavía no se tiene el núcleo completo funcionando.

Mensajes de error

Unsupported GNU version! gcc 4.5 and up are not supported!

En Linux se podría encontrar este error dependiendo de la versión de GCC.

Si es así, borrar la siguiente línea en '/usr/local/cuda/include/host_config.h'.

#error -- unsupported GNU version! gcc 4.5 and up are not supported!
Error CUDA: Invalid kernel image o imagen del núcleo no válida

Si se encuentra este error en Windows de 64 bits, asegurarse de estar usando la versión de 64 bits de Blender y no la de 32 bits.

Error CUDA: Out of memory o sin memoria

Normalmente esto significa que no hay suficiente memoria para almacenar la escena en la GPU. En la actualidad solo se pueden procesar escenas que quepan en la memoria de la tarjeta gráfica y normalmente ésta es más pequeña que la del equipo. Para más detalles ver más arriba.

El controlador de OpenGL de nVidia pierde la conexión con el controlador del monitor

... debido a un límite de tiempo de Windows (Windows Time-Out) y no es capaz de continuar.

Si la GPU se usa tanto para para la pantalla como para el procesamiento, Windows tiene un límite sobre el tiempo que la GPU puede realizar cálculos de procesamiento. Si la escena es particularmente compleja, Cycles puede requerir mucho tiempo de la GPU. Reducir el tamaño de las divisiones (Tile Size) en el panel de Rendimiento puede aliviar esta cuestión, pero la única solución real es usar tarjetas gráficas diferentes para la pantalla y para el procesamiento.