ALGORITMO EN PARALELO PARA TRANSFORMACIONES GEOMÉTRICAS EN 3D SOBRE OpenGL.


Resumen.
Se ha diseñado un algoritmo que permite que las transformaciones geométricas en OpenGL sean procesadas por un sistema multiprocesador. Hemos integrado este dentro de Mesa, una librería de gráficos 3D con un API el cuál es muy similar al de OpenGL.

I. INTRODUCCIÓN..
El renderado de la mayoría de las máquinas poligonales en 3D tienen un orden similar de operación, una serie de estados de procesamiento llamados tuberías 3D. Esto es hecho por dos estado principales: geometría y rasterización. El buen final que proveen los aceleradores 3D al hardware en las transformaciones geométricas, permite finalizar tarjetas relegadas al software. Desafortunadamente los actuales CPU no son capaces de guardar tranquilamente con los finales aceleradores 3D. Las transformaciones geométricas pueden ser aceleradas usando el paralelismo con instrucciones de punto flotante SIMD. El objetivo es usar computadoras SMP para acelerar los estados de la geometría. La primera solución es escribir un librería en paralelo el cuál usa un API no estándar adaptado a computación 3D en paralelo. Es la principal idea del proyecto Argus. El mayor inconveniente es la necesidad de rescribir las aplicaciones 3D para usar el nuevo API y beneficiarse de la paralelización. La segunda es modificar la librería que usa un API estándar para paralelizar las transformaciones geométricas en computadora. Hemos modificado Mesa, una librería de gráficos 3D con un API el cuál es muy similar al de OpenGL. Para lo que se ha escrito una versión paralela de Mesa llamado PMesa, la cuál usa un algoritmo en paralelo escalable. Pmesa puede tratar teóricamente con p procesadores con un teórico aumento en velocidad cercano a p.

II. PMesa.
Describiendo un proceso con OpenGL lo que significa modificar los estado de unos pocos parámetros para cada marco y representando los objetos de OpenGL. Un objeto en OpenGL es una lista de vértices, colores, normas y texturas coordinadas entre una llamada a glBegin y glEnd. Cada objeto es almacenado en un vértice del buffer (VB). Mesa calcula las transformaciones geométricas después de cada glEnd. Hemos distinguido tres estados principales dentro de las transformaciones geométricas, el estado de llenado, donde los vértices están acumulados, el estado de procesamiento donde son transformados y el estado vacío donde son enviados a la tarjeta de vídeo para su representación. El estado de llenado y de vacío deben estar en orden pero el de procesamiento puede estar fuera de orden.

Se ha escogido incrementar la longitud del estado de procesamiento acumulando un conjunto de V.B. De esta manera se puede mejorar la eficiencia de nuestra paralelización. Se usara la memoria compartida de los sistemas SMP. La optima solución para este problema es tener un ciclo de estado de llenado-procesamiento-vació y otro ciclo para el procesador. Debido a que algunos comandos pueden ser afectados por comandos anteriores en el estado de procesamiento de la computadora es necesaria la duplicación de estos estados y la sincronización de los ciclos.

Por lo que se ha realizado un algoritmo para p procesadores. Cada vez un ciclo maestro procesa p llenado y el estado de vacío dentro de p buffers conteniendo G vértices, y p procesadores esclavos para el estado de procesamiento de estos p buffers. El código es ejecutado después de cada glEnd así que la sincronización de los ciclos principales crece linealmente con el número de vértices. Para lo que se usa un algoritmo de carga estadístico balanceado.

Para verificar la eficiencia del algoritmo para cada medida del VB se ha hecho una microseñal llamada Glutspeed deonde el número de vértices por objeto de OpenGL es ajustable. Este dibuja un escenario con 9,000,000 de vértices y la medida del tiempo. Con lo que se puede ver que mientras los granos entre 500 y 1100 dan el mejor rendimiento si aumenta de 1000 el desempeño decrece debido a la jerarquía de la memoria.

En un biprocesador, PMesa aumenta la velocidad hasta 1.8 contra Mesa cuando la representación esta apagada. El aumento en la velocidad esta cerca del aumento de la velocidad teórica del algoritmo. Se han evaluado los factores limitantes en PMesa el cual está actualmente con software de representación o con hardware de aceleración para representarlo (3dfx voodoo) PMesa usa completamente el API de OpenGL y puede ser usado también por cualquier de OpenGL en Unís o Windows NT.

BIBLIOGRAFÍA.

Sébot J., Vartanian A., Béchennec J.-L., Drach N. A Parallel Algorithm for 3D Geometry Transformations in OpenGL [en línea]. European Conference on Parallel Computing ,20 marzo 1999 [Ref. de 7 octubre de 2004].Disponible en Web: <http://www.lri.fr/~sebot/publi/pmesa-europar99-short.ps.gz . >