next up previous contents
Next: 4.4.6 Instalación de MPI-POV-Ray Up: 4.4 Uso del cluster Previous: 4.4.4 POV-Ray   Índice General

4.4.5 Paralelizando POV-Ray

El código fuente de POV-Ray abarca varios megabytes de espacio en disco, y es complejo y extenso. Sin embargo, se asume que cumple con las características generales del algoritmo de ray tracing, recordando en particular que dicho algoritmo es fácilmente paralelizable.

Se realizaron investigaciones en internet para localizar información que pudiera ser de ayuda en la modificación de POV-Ray para máquinas paralelas. Interesantemente, se encontró que ya existen dichas modificaciones al código fuente. Éstas se distribuyen de manera separada, como ``parches'' al código fuente de POV-Ray. Más aún, existen dos variantes de este código, implementadas en PVM y MPI respectivamente.

PVMPOV4.14, escrito por Andreas Dilger, es el primero de estos paquetes. Se trata de modificaciones al código que proporcionan a POV-Ray ``...la capacidad de distribuir el trazado a través de múltiples sistemas heterogéneos. El vehículo de la implementación es el sistema PVM ...''.

La implementación de PVMPOV se centra en un esquema maestro-esclavo, correspondiendo exactamente a la organización maestro-esclavo descrita en la sección (3.2.1). El proceso maestro divide la imagen en pequeños bloques, que se asignan a los esclavos. Cuando éstos completan el trazado de sus bloques, se envían de regreso al maestro para combinarlos y formar la imagen terminada. El maestro no realiza ninguna tarea de trazado.

PVMPOV es una opción para obtener la versión paralela de POV-Ray. No obstante, se consideró que una implementación en PVM puede no resultar la más conveniente. Las razones más importantes para buscar otras opciones fueron el menor rendimiento que se observó con la implementación en PVM del programa de multiplicación de matrices, así como los problemas de estabilidad y confiabilidad exhibidos por el mismo.

Afortunadamente, también existe una implementación paralela de POV-Ray utilizando MPI. MPI-POVRay4.15, desarrollado por Leon Verrall, ``...consta de un parche al programa POV-Ray que distribuye el trabajo entre un número de elementos de procesamiento. La comunicación entre los elementos se logra por medio de paso de mensajes con MPI''.

Como un testigo más de la compatibilidad funcional entre diferentes APIs de paso de mensajes, la página de Leon Verrall detalla que ``...este parche está en gran parte basado en el excelente trabajo de Andreas Dilger en PVMPOV. He reimplementado el código de paso de mensajes en MPI pero el código de entrada/salida y asignación de bloques son en gran medida los mismos que en PVMPOV...''.

Ya que MPI exhibió mejor rendimiento, mayor facilidad de uso, mejor estabilidad y capacidad de recuperación de errores, se consideró más apropiado utilizar MPI-Povray.

El utilizar código disponible públicamente permitió reducir el tiempo en el cual se logra tener una aplicación real operativa en el cluster.


next up previous contents
Next: 4.4.6 Instalación de MPI-POV-Ray Up: 4.4 Uso del cluster Previous: 4.4.4 POV-Ray   Índice General
2002-05-15