2010-03-01 13 views
6

Gibt es eine universelle Physik-Engine, die riesige Simulationen von starren Körpern ermöglicht? Ich benutze PhysX von Nvidia, aber der Fokus dieser Engine liegt auf der Entwicklung von Spielen, weichen Körpern. Ich möchte wissen, ob Physik-Engine vorhanden ist, die auf PS3-Zellen-Prozessoren oder CUDA-Kernen läuft, die massive wissenschaftliche Physik-Simulationen erlauben.Allgemeine Physik-Engine

Antwort

2

Es gibt keine universelle Physikbibliothek. Z.B. Können Sie sich eine nützliche Weichteil-Simulation vorstellen, die relativistische Effekte berücksichtigt? Sie können sich Dutzende weitere Beispiele vorstellen.

Sie sprechen über beide wissenschaftliche und Starrkörper-Simulation, so ist es nicht klar, wie realistisch Sie sein möchten. Der starre Körper ist eine Annäherung: Nichts ist absolut starr. Aber wenn sich in Ihrer Simulation nichts sehr verformt und Ihnen eine Reihe von unrealistischen Annäherungen an Reibung und Zeitraffer (die allen Videospielen gemein sind) nichts ausmacht, und Sie eine Out-of-the-Box-Lösung wünschen, verdächtige ich Havok Moderne CPU wird Ihnen die beste Leistung bringen.

PS/3 ist derzeit letzte Generation. Während ich zu meiner Zeit viel Spaß daran hatte, Physik zu schreiben, muss ich zugeben, dass ein moderner i7 mit 6 Kernen mehr Leistung bietet - sowohl theoretisch als auch in der Praxis - als eine Zelle.

CUDA ist zur Zeit unbewiesene Tech für die Physik. Ich habe nichts davon geschrieben, aber ich bin sehr interessiert Leser :) Die Herausforderungen des Schreibens CUDA-basierten Physik sind ziemlich nicht trivial, wenn Sie IPC (Instruktion pro Zyklusverhältnis) einer modernen CPU und ich nähern wollen Ich weiß nicht, dass jemand das erfolgreich bewältigt hat. Und wenn Sie sich nicht dem IPC der CPU-basierten Physik nähern, hat die CUDA-Physik keinen Sinn, da sie mehr Aufwand erfordert.

Rechnen Sie einfach: Eine $ 500 Kepler GPU hat 1536 Kerne @ 1GHz = 1,5 Petaflops. Eine $ 590 Sandy Bridge CPU hat 6 Cores/12 Hyperthreads AVX (8-wide) bei 3,8 GHz = 0,36 petaflop. Wenn Sie nun eine 5-zu-1-Parität erreichen (verwenden Sie durchschnittlich 5 GPU-Zyklen für 1 CPU-Zyklus), läuft Ihre theoretische CUDA-Physik mit der gleichen Geschwindigkeit wie die CPU-Physik. Jetzt ist es nicht wirklich einfach, 12 Hyperthreads und AVX (8-wide SIMD) effizient zu nutzen. Aber Parallelisierung von physikalischen Aufgaben über 1536 (!) CUDA-Threads, die sehr kohärent sein müssen und Speicher viel kontrollierter verwenden, ist keine geringe Leistung. Ich sage nicht, dass es unmöglich ist (und ich würde es gerne versuchen, aber ich habe einen Job und andere Lieblingsprojekte), aber es wird einige Zeit dauern, bis die Physikgemeinschaft etwas über Tausende von Threads skalieren kann.

Und am Ende der Geschwindigkeitsverbesserung ist nur 5-fach oder so ... :)

Wie auch immer, wenn Sie das selbst schreiben sim, und Sie keinen allgemeinen starren Körper Simulation wollen, dann CUDA kann dein Freund sein. Z.B. Wenn Sie die Bewegung aller Sterne in der Milchstraße simulieren wollen, mit Relativismus, aber ohne Supernova und andere diskrete Effekte ... Es ist ziemlich klar, wie man das über 1536 (und mehr) Threads verteilt. Aber wenn Sie einen Berg von starren Körpern haben wollen, simulieren Sie die gleiche Art wie Spiele es derzeit tun, Sie haben kein Glück

0

Die Simbodie Mehrkörperdynamik-Bibliothek wird für molekulare Simulationen verwendet, die Tausende von Molekülen enthalten (starre Körper) . Siehe das GIF im SimHobody GitHub-Repository: http://github.com/simbody/simbody.

Die Bibliothek wird auch stark von der biomechanischen Gemeinschaft verwendet, um menschliche Bewegung zu simulieren. In einem solchen Fall werden die Menschen als ein System starrer Körper modelliert.

Wenn Sie eine Bibliothek für die Wissenschaft suchen, dann sollten Sie sich Simbody anschauen. Es wurde jedoch nicht für PS3-Zellenprozessoren oder CUDA-Kerne verwendet.