2010-03-01 10 views
6

¿Hay algún motor de física de propósito general que permita grandes simulaciones de cuerpos rígidos? Estoy usando PhysX de Nvidia, pero el objetivo de este motor es el desarrollo de juegos, cuerpos blandos. Quiero saber si existe un motor de física que se ejecuta sobre procesadores de células PS3 o núcleos CUDA que permiten simulaciones de física científica masivas.Motor de física de propósito general

Respuesta

2

No hay una biblioteca de física "universal". P.ej. ¿Te imaginas una cirugía útil de simulación de tejidos blandos que tenga en cuenta los efectos relativistas? Podrías imaginar docenas de ejemplos más.

Habla de la simulación corporal científica y rígida, por lo que no está claro qué tan realista quiere ser. El cuerpo rígido es una aproximación: nada es absolutamente rígido. Pero si nada se deforma mucho en su simulación, y está bien con un montón de aproximaciones poco realistas a la fricción y el movimiento rápido (común a todos los videojuegos), y quiere una solución lista para usar, sospecho que Havok se está ejecutando. la CPU moderna le dará el mejor rendimiento.

PS/3 es actualmente de última generación. Aunque disfruté mucho escribiendo física en mi época, debo admitir que un i7 moderno con 6 núcleos le da más rendimiento, tanto teórica como práctico, que una Celda.

CUDA no está actualmente probado en tecnología para la física. No escribí nada de eso, pero estoy muy interesado en el lector :) Los desafíos de escribir física basada en CUDA son bastante triviales si quieres acercarte a IPC (instrucción por relación de ciclo) de una CPU moderna, y yo No conozco a nadie que lo haya logrado con éxito. Y si no se acerca al IPC de la física basada en CPU, no tiene sentido la física CUDA, ya que requiere más esfuerzo.

Simplemente haga los cálculos: una GPU Kepler de $ 500 tiene 1536 núcleos a 1GHz = 1.5 petaflops. Una CPU Sandy Bridge de $ 590 tiene 6 núcleos/12 hyperthreads AVX (8-wide) @ 3.8GHz = 0.36 petaflop. Ahora, si puede lograr una paridad de 5 a 1 (use 5 ciclos de GPU en promedio para 1 ciclo de CPU), su física CUDA teórica funcionará a la misma velocidad que la física de la CPU. Ahora, usar 12 hyperthreads y AVX (8-wide SIMD) de manera eficiente no es realmente fácil. Pero paralelizar las tareas de física a través de los hilos 1536 (!) CUDA, que deben ser muy coherentes y usar la memoria de una forma mucho más controlada, tampoco es una tarea fácil. No digo que sea imposible (y me encantaría probarlo, pero tengo un trabajo diario y otros proyectos favoritos :)), pero pasará un tiempo antes de que la comunidad de física encuentre algo escalable en miles de temas.

Y al final la mejora de la velocidad es sólo 5 veces o así ... :)

De todos modos, si se escribe el mismo Sim, y no desea que una simulación general de cuerpo rígido, entonces CUDA puede ser tu amigo P.ej. Si quieres simular el movimiento de todas las estrellas en la Vía Láctea, con relativismo, pero sin supernova y otros efectos discretos ... Está bastante claro cómo propagar eso a través de 1536 (y más) hilos. Pero si quiere tener una montaña de cuerpos rígidos, simulada de la misma forma en que lo hacen los juegos actualmente, está de suerte

0

La biblioteca de dinámicas multicuerpo Simbody se utiliza para simulaciones moleculares que contienen miles de moléculas (cuerpos rígidos) . Vea el GIF en el repositorio GitHub de Simbody: http://github.com/simbody/simbody.

La biblioteca también es muy utilizada por la comunidad de biomecánica para simular el movimiento humano. En tal caso, los humanos son modelados como un sistema de cuerpos rígidos.

Si está buscando una biblioteca para la ciencia, entonces debería ver Simbody. Sin embargo, no se ha utilizado en procesadores de células PS3 o núcleos CUDA.

Cuestiones relacionadas