domingo, 16 de enero de 2011

Simulación de tejidos procesamiento paralelo. PGATR_E_0

Como trabajo voy a intentar hacer una pequeña introducción al procesado paralelo en simulación de tejidos.
La simulación de tejidos es una tarea altamente compleja y tremendamente costosa computacionalmente. Una de las formas comunes de realizar la simulación de tejidos es mediante una nube de puntos unida mediante springs (aunque existen muchas más), si se quiere realizar una simulación más realista de los tejidos se deberá aumenta el número de vértices. Sin embargo, como es lógico, la capacidad de computo necesaria aumenta en gran medida al aumentar el número de nodos.
La simulación de tejidos tiene una gran cantidad de aplicaciones la primera y relativamente más sencilla se encuentra en la aplicación para juegos, simular banderas, telas colgadas o los ropajes de los personajes proporcionan un mayor realismo y credibilidad al juego.
A nivel de ingeniería las aplicaciones son enormes, obviamente para la moda y todo tipo de ropa que permitan simular los nuevos tejidos a crear antes de su fabricación, pero también la mejora de los procesos industriales que utilizan tejidos como por ejemplo tapizados.


Problema a Resolver


El mayor problema es la gran cantidad de datos a procesar en la simulación de tejidos, tenemos muchos nodos que están relacionados con otros nodos y solo un procesado de todos ellos nos permitirá tener un resultado optimo. Como problema de computación añadido en este caso, la división del problema en entidades independientes no es tan trivial como en otros problemas.
Por suerte hay algunos métodos que se pueden aplicar como la división del tejido en partes e. Además si estamos simulando un juego con varios personajes que lleven ropa podemos utilizar distintos nucleos para cada una de las prendas de cada personaje. Este proceso realizado en CPU ademas de ser muy costoso acabaría rápidamente con todos los cores de nuestro PC.

Comparación con medidas reales
Aunque seguramente existen, no se han encontrado datos que comparen los resultados visuales con los resultados de ingeniería. En su aplicación más directa que son los juegos un resultado visualmente consistente es suficiente para la mayoría de las aplicaciones.

Métodos de paralelización aplicados
Existen muchas técnicas de paralelización, algunas de las que se han encontrado son las siguientes:
  • Espacio de memoria compartida [RRZ00,LGPT01, GRR_05].
  • Arquitecturas basadas en paso de mensajes [ZFV02, ZFV04, KB04, TB06]
  • CPU multi nucleo. [BSW07]
  • Técnicas multinivel centradas en la simulación del tejido con una comparación entre paso de mensajes [LGPT01]
  • Acceso a Memoria no uniforme (NUMA) [RRZ00]


Herramientas utilizadas
Las librerías vistas en los desarrollos suelen ser C, C++, OpenGL, OpenCL, CUDA, OpenMP

Cuellos de botella
Los cuellos de botella se producen en los dos procesos a calcular, la propia deformación de la malla y la colisión con otros objetos.

Demos
A continuación podemos ver varios videos de comparación en el uso de tecnologías y aplicaciones si bien no se ha encontrado más información sobre rendimientos numéricos.

Comparación CPU y GPU

Como se puede ver al final del video el tiempo para resolver cada paso de una de las demos con la GPU con CUDA es de 0.03 seg y con CPU el tiempo es de aprox 0.17.

Comparación de rendimiento entre CPU, GLSL,OpenCL y CUDA.


Como se puede ir viendo en las distintas interacciones GLSL y CUDA consiguen unos rendimientos mucho mejores que la CPU.


Fuente principal para este trabajo:

[RRZ00] ROMERO S., ROMERO L. F., ZAPATA E. L.: Fast Cloth Simulation with Parallel Computers. In Euro- Par (2000), pp. 491—499.
[LGPT01] LARIO R., GARCIA C., PRIETO M., TIRADO F.: Rapid Parallelization of a Multilevel Cloth Simulator Using OpenMP. In Third European Workshop on OpenMP (2001).
[GRR_05] GUTIERRÉZ E., ROMERO S., ROMERO L. F., PLATA O., ZAPATA E. L.: Parallel techniques in irregular codes: cloth simulation as case of study. Journal of Parallel and Distributed Computing 65, 4 (April 2005), 424–436.
[ZFV02] ZARA F., FAURE F., VINCENT J.-M.: Physical Cloth Animation on a PC Cluster. In Fourth urographics Workshop on Parallel Graphics and Visualisation (2002).
[ZFV04] ZARA F., FAURE F., VINCENT J.-M.: Parallel simulation of large dynamic system on a pcs cluster: Application to cloth simulation. International Journal of Computers and Applications (march 2004). special issue on cluster/grid computing.
[TB06] THOMASZEWSKI B., BLOCHINGER W.: Parallel simulation of cloth on distributed memory architectures. In Proc. of Eurographics Symposium on Parallel Graphics and Visualization 2006 (Braga, Portugal, May 2006).
[KB04] KECKEISEN M., BLOCHINGER W.: Parallel implicit integration for cloth animations on distributed memory architectures. In Proc. of Eurographics Symposium on Parallel Graphics and Visualization 2004 (Grenoble, France, June 2004).
[LGPT01] LARIO R., GARCIA C., PRIETO M., TIRADO F.: Rapid Parallelization of a Multilevel Cloth Simulator Using OpenMP. In Third European Workshop on OpenMP (2001).
[RRZ00] ROMERO S., ROMERO L. F., ZAPATA E. L.: Fast Cloth Simulation with Parallel Computers. In Euro-Par (2000), pp. 491—499.
[BSW07] B. Thomaszewski, S. Pabst, and W. Blochinger. Exploiting parallelism in physically-based simulations on multi-core processor architectures. In Proc. of Eurographics/ACM Siggraph Symposium on Parallel Graphics and Visualization 2007, pages 69-76, Lugano, Switzerland, May 2007.


No hay comentarios:

Publicar un comentario