Renderizado Split/Frame en ResPower Super/Farm.
por - Cory King y Early Ehlinger


Esquema:
I - ¿Qué es el renderizado Split/Frame?
II - ¿Cómo realizar un renderizado Split/Frame con Blender en ResPower?
III - ¿Qué decir en cuanto al reensamblado?
IV - ¿Cuanta aceleración proporciona Split/Frame?
V - Ejemplos reales.
VI - Resultados conocidos.

I - ¿Qué es el renderizado Split/Frame?

ResPower esta constantemente en la búsqueda de nuevas formas de acelerar el proceso de creación de contenidos 3D, específicamente en el área de renderizado. Una forma muy sencilla de reducir los tiempos de creación de animaciones, con cientos o miles de fotogramas, es simplemente renderizar cada fotograma en un ordenador distinto a fin de ejecutar múltiples fotogramas en paralelo. El renderizado Split/Frame es básicamente el mismo proceso, aunque sólo esta diseñado para imágenes de fotogramas estaticos.

La idea básica detrás del renderizado Split/Frame es romper un único fotograma en varios segmentos llamados "cubos" (buckets). Cada cubo es entonces renderizado por separado en un ordenador
(posiblemente cien o más) de tal manera que varios segmentos pueden ser ejecutado en paralelo. En teoría la aceleración es lineal, lo que significa que un fotograma dividido en 100 cubos debería renderizarse 100 veces más rápido que el mismo fotograma renderizado como un único cubo. Desafortunadamente, a causa de la Ley de Amdahl, éste no es el caso, aunque el incremento de la velocidad puede ser notable. Observe la información anexa sobre Amdahl al final de este artículo.

El renderizado Split/Frame no es un concepto nuevo y ha estado disponible durante años en muchos motores de renderizado 3D. Paquetes 3D profesionales, como 3DStudio y Lightwave, soportan
nativamente Split/Frame, pero incluso con estos paquetes las ventajas del Split/Frame sólo se hacen notar cuando se utiliza una "render farm" como ResPower.

II - ¿Cómo realizar un renderizado Split/Frame con Blender en ResPower?
La API de Python en Blender tiene facilidades para llevar a cabo un "Border Render". Ésto básicamente significa que una sección rectangular de píxeles, de una imagen, puede ser seleccionada y hacer que el motor de render trabaje sólo con los píxeles de ese rectángulo, dejando todo lo demás en negro. Usando este método, ResPower puede dividir una imagen en cualquier cantidad arbitraria de cubos, y renderizar cada segmento en un ordenador distinto. Entonces, usando otro software open source llamado
ImageMagick, el fotograma es recortado de forma automática para eliminar todo el espacio negro extra. Cada cubo individual de la producción es guardado como una imagen separada en la carpeta Renders del usuario.

La capacidad de renderizar porciones separadas de un solo cuadro en paralelo, permite a los artistas 3D que trabajan con fotogramas estáticos aprovechar plenamente las ventajas de una "render
farm". Con esta técnica, un solo fotograma puede ser renderizado a máxima resolución en cuestión de minutos con ResPower, cosa que podría tomar horas o incluso días, si se renderizara al mismo
tamaño y calidad con un solo ordenador.

Además, debido a que su máquina no se encuentra con la ardua tarea del renderizado, un artista puede seguir ajustando su escena o trabajar en algo completamente diferente mientras su fotograma es renderizado.

III - ¿Qué decir en cuanto al reensamblado?
ResPower ha introducido recientemente la posibilidad de reensamblar todos los cubos, de un renderizado Split/Frame, con un proceso llamado "stitching". Para los fotogramas sometidos a Split/Frame, existe un comando en la página de trabajos denominado Stitch. Stitching, utiliza ImageMagik para tomar de forma programada todos los cubos individuales de una imagen y añadirlos en una sola imagen a tamaño completo. Todas las imágenes individuales de cada cubo seguirán estando disponibles para su descarga si el usuario lo desea, pero una nueva imagen llamada "frame_x.stitched.ext" aparecerá en la carpeta Renders una vez haya finalizado el stitching, donde "x" es el número del fotograma y "ext" es la extensión del archivo, es decir, png, jpg, bmp, etc.

ImageMagik trabaja desde la línea de comandos a fin de que esta sobrecarga asociada con la puesta en marcha de una interfaz gráfica de usuario sea completamente eliminada. Ésto significa que más recursos están disponibles para dedicar al proceso de reensamblado, lo que significa que los clientes
obtendrán el producto terminado más rápido. Otra ventaja de ejecutar ImageMagik desde la línea de comandos es que el reensamblado puede ser ejecutado de manera casi completamente automatizada. Con un solo comando, la farm buscara todas las imágenes necesarias, se las proporcionara a ImageMagick, y finalmente esperara por la salida final.

Esta capacidad es muy superior a la antigua forma de reensamblado de cubos de imágenes donde los usuarios requerían utilizar un software de edición de imágenes como Photoshop y agrupar manualmente todas las imágenes para obtener el producto final.

IV - ¿Cuanta aceleración proporciona Split/Frame?
Como ya se dijo antes, la aceleración teórica del renderizado Split/Frame es lineal, por lo que una división 50 x 50 debería ser renderizada 2500 veces más rápido que sin división. Desafortunadamente, ResPower no ha sido capaz de convertir la Teoría en realidad (los costes son *increíblemente* altos ahí), y las cosas que funcionan en la Teoría no siempre funcionan en la realidad. La aceleración es considerable con divisiones en el rango de 16 a 400 cubos. Lamentablemente hay muchos factores que intervienen en la determinación de la mejor división, y prueba y error es en general la mejor manera de encontrar la división óptima.

Debido a que Blender es sólo utilizable en la ResPower Super/Farm por adquisición de una suscripción, los clientes no tendrán que preocuparse por elegir mal la división. Si una división 2 x 2 no es lo suficientemente rápida, puede utilizar una de 4 x 4. Si empieza con 10x10, y nota que ha conseguido un punto en donde el rendimiento comienza a ser decreciente, entonces puede volver atrás para una división 8x8.

V - Ejemplos reales.
El archivo utilizado para determinar estos tiempos puede encontrarse aquí. Es facilitado para que pueda renderizar sobre su propio sistema con el fin de determinar la velocidad que puede esperar cuando use Split/Frame en el ResPower Super/Farm. http://www.respower.com/~CoryKing/split_frame_test/

Éstos son los tiempos necesarios para renderizar este archivo con diferentes divisiones utilizando sólo los más rápidos nodos de renderizado disponibles en la "farm". La resolución de cada fotograma renderizado ronda los 2048 x 2048 píxeles.
Los ligeros cambios se deben al hecho de que la anchura y la altura en píxeles, deben ser un múltiplo del número de cubos para reensamblar el trabajo adecuadamente. Por ejemplo, un fotograma de 800 x 600 píxeles no debería ser renderizado con una división de 7 x 7 porque ni 800 ni 600 son divisibles por 7.

Tenga en cuenta que los tiempos de renderizado dependen de varios factores, incluyendo, la complejidad de la escena, el estrés de la red, la disponibilidad de los nodos de renderizado, y mucho más. Debido a estos factores, este conjunto muy pequeño de datos es bastante inconsistente. Un conjunto de datos más robusto podría mostrar una curva de progresión más suave entre los puntos de datos.





www.blenderart.org