2010-03-01 7 views
6

Existe-t-il un moteur physique généraliste permettant des simulations de corps rigides? J'utilise PhysX de Nvidia, mais l'objectif de ce moteur est le développement de jeux, les corps mous. Je veux savoir s'il existe un moteur de physique qui fonctionne sur des processeurs de cellules PS3 ou des cœurs CUDA permettant des simulations de physique scientifique massive.Moteur physique à usage général

Répondre

2

Il n'y a pas de bibliothèque physique « universelle ». Par exemple. pouvez-vous imaginer une simulation de tissus mous de chirurgie utile qui tiendrait compte des effets relativistes? Vous pouvez imaginer des dizaines d'autres exemples.

Vous parlez à la fois la simulation du corps scientifique et rigide, il ne sait pas comment vous voulez être réaliste. Le corps rigide est une approximation: rien n'est absolument rigide. Mais si rien ne se déforme beaucoup dans votre simulation, et que vous vous contentez d'un tas d'approximations irréalistes de la friction et du mouvement rapide (communes à tous les jeux vidéo), et que vous voulez une solution prête à l'emploi, CPU moderne vous donnera les meilleures performances.

PS/3 est actuellement la dernière génération. Bien que j'aie beaucoup aimé écrire de la physique dans ma journée, je dois admettre qu'un i7 moderne avec 6 cœurs vous donne plus de performance - à la fois théoriquement et en pratique - qu'une seule cellule.

CUDA est actuellement la technologie non éprouvée pour la physique. Je n'ai rien écrit dessus, mais je suis très intéressé lecteur :) Les défis de l'écriture de la physique basée sur CUDA ne sont pas triviaux si vous voulez approcher IPC (instruction par rapport au cycle) d'un CPU moderne, et je Je ne connais personne qui ait réussi à l'accompagner. Et si vous ne vous approchez pas de l'IPC de la physique basée sur CPU, il n'y a aucun intérêt dans la physique CUDA, car cela demande plus d'efforts. Il suffit de faire le calcul: un GPU Kepler à 500 $ a 1536 cœurs à 1 GHz = 1,5 pétaflops. Un CPU Sandy Bridge de 590 $ a 6 cœurs/12 hyperthreads AVX (8-wide) @ 3.8GHz = 0.36 petaflop. Maintenant, si vous parvenez à atteindre une parité de 5 à 1 (utilisez 5 cycles de GPU en moyenne pour 1 cycle de CPU), votre physique théorique CUDA fonctionnera à la même vitesse que la physique du CPU. Maintenant, l'utilisation efficace de 12 hyperthreads et AVX (8-wide SIMD) n'est pas vraiment facile. Mais paralléliser les tâches physiques sur 1536 (!) Threads CUDA, qui doivent être très cohérents et utiliser la mémoire de manière beaucoup plus contrôlée n'est pas non plus un petit exploit. Je ne dis pas que c'est impossible (et j'adorerais l'essayer, mais j'ai un travail de jour et d'autres projets pour animaux de compagnie :)) mais il faudra un certain temps avant que la communauté physique ne propose quelque chose d'évolutif sur des milliers de threads.

Et à la fin de l'amélioration de la vitesse est à seulement 5 fois ou alors ... :)

Quoi qu'il en soit, si vous écrivez vous-même sim, et vous ne voulez pas une simulation de corps rigide général, puis CUDA peut être ton ami. Par exemple. Si vous voulez simuler le mouvement de toutes les étoiles de la Voie Lactée, avec le relativisme, mais sans supernova et autres effets discrets ... Il est assez clair comment répartir cela sur 1536 (et plus) threads. Mais si vous voulez avoir une montagne de corps rigides, simulés de la même façon que les jeux le font actuellement, vous n'avez pas de chance

0

La bibliothèque Simbody multibody dynamics est utilisée pour des simulations moléculaires contenant des milliers de molécules (corps rigides) . Voir le fichier GIF au dépôt GitHub de Simbody: http://github.com/simbody/simbody.

La bibliothèque est également utilisé fortement par la communauté biomécaniques pour simuler le mouvement humain. Dans un tel cas, les humains sont modélisés comme un système de corps rigides.

Si vous êtes à la recherche d'une bibliothèque pour la science, alors vous devriez vérifier Simbody. Cependant, il n'a pas été utilisé sur les processeurs de cellules PS3 ou les cœurs CUDA.

Questions connexes