PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Physx/OpenCL Frage


-B@lu-
2010-11-11, 00:37:06
Hallo Programmier Cracks,

ich habe eine Frage bezüglich Physx und/oder OpenCL. Für ein Projekt an der Uni suche ich Informationen, wieviele Objekte ich mit diesen Features schätzungsweise in Echtzeit simulieren kann. Es geht darum, dass das Fließverhalten von verschiedenen Granulaten in einem Silo mit herkömmlichen Simulationsmethoden und stark vereinfachten Bedingungen ( ca 10mio Partikel auf 300.000 Objekte vereinfacht ) immernoch erhebliche Rechnerresourcen/Zeit in Anspruch nimmt (bis zu 14 Tage für die genannten Bedingungen).

Bietet Physx bzw. OpenCL hier eventuell einen Ansatz solche Berechnungen effizienter zu gestalten? Wie viele Objekte lassen sich schätzungsweise physikalisch korrekt in Echtzeit auf einmal berechnen?

meine Google Recherchen haben hier leider bisher zu keinem Ergebnis geführt..

danke schonmal

Coda
2010-11-11, 00:59:44
Wie genau sehen die Simulationsschritte denn aus? Hängen die nur von jeweils dem letzten Zeitschritt ab?

Falls das der Fall ist wirst du da je nach Programmierung Faktor 100 und schneller erwarten können wenn du es auf der GPU machst.

Allerdings verstehe ich nicht was PhysX damit zu tun hat.

-B@lu-
2010-11-11, 04:34:10
Ich muss zugeben, dass ich als "Nichtinformatiker" nur mit meinem Gamer Wissen hier antrete. Ich bin davon ausgegangen, dass physikalische Berechnungen (in diesem Fall simple technische Mechanik) mit einem "Physikbeschleuniger" (so wie früher die Ageia Addon Karten oder heute einfach die GPU) wesentlich schneller hinbekommen als auf herkömmliche Weise.

Physx interpretiere ich jetzt einfach mal als die Schnittstelle, mit der ich so eine Simulation ablaufen lassen kann.

Situation: Zylinderförmiger Behälter mit trichterförmigen Ausgang am Boden (z.b. http://www.glik.org/silosi/sil9-big.jpg ). Gefüllt ist der Apparat bis oben hin mit Partikeln im Ruhezustand.

Simulation: Boden öffnen, Fließbewegung aus dem Behälter unter Erdbeschleunigung mit maximaler physikalischer Präzision (also Wechselwirkungen zwischen den Partikeln wie Prall und Reibung, Wandreibungskräfte etc), um der Realität am nächsten zu kommen.

Ich denke die Simulationsschritte hängen nicht nur vom letzten Schritt ab, da die Partikel auch entsprechend kinematische Energie aufgenommen haben, aber ich weiss jetzt nicht genau ob ich deine Frage richtig interpretiert habe.

Nighthawk13
2010-11-11, 09:18:34
Schau dir mal das Nvidia Fluid Demo an, dort werden viele Partikels verwendet(Debugdarstellung ab Sekunde 42):
http://www.youtube.com/watch?v=ok8ThRR-59Q
http://www.nvidia.com/content/graphicsplus/us/download.asp (ganz unten)

Wenn du keine Echtzeitfähigkeit brauchst, sollte die verwendete Technik auch mit 300K Particles gehen.

Wenn du "Maximale physikalische Präzision" willst, wirst du evtl. selbst was implementieren müssen.

Google-Hit nach "SPH Cuda":
http://www.iwhr.com/eng_stu/down/JHR2010/07.pdf

Trap
2010-11-11, 09:45:05
Ich hab keine Ahnung wie schwer das Problem numerisch zu simulieren ist. Es sind mitunter kleine Details, die im Ergebnis und in der Rechenzeit eine große Auswirkung haben. Du müsstest den exakten Begriff für die Disziplin der numerischer Simulation rausfinden um genauere Informationen zu bekommen.

Zu den Vergleichen GPU zu CPU muss man allerdings sagen, dass in den meisten Fällen der CPU-Code im Vergleich bei weitem nicht die gleiche Optimierungsarbeit hinter sich hat: http://portal.acm.org/citation.cfm?doid=1816038.1816021 (ist zwar von Intel, aber Messwerte sind Messwerte)

-B@lu-
2010-11-11, 18:57:02
Danke für die Antworten. Das CUDA Dokument war schonmal sehr aufschlussreich für mich! Es ist die Rede von bis zu 5 Millionen Objekten in Echtzeit und ich hatte bisher noch nichts von "CUDA" gehört muss ich zugeben. Aber genau deshalb poste ich ja hier :)

Die Fluid Techdemos auf youtube habe ich mir bereits angeschaut, denke aber, dass die Genauigkeit hier für meinen Zweck nicht ausreichend wäre. Diese Fluide werden so wie ich das verstanden habe aus mit geleartigen Eigenschaften ausgestatteten Würfeln aufgebaut, welche im Nachhinein optisch weich gezeichnet werden um ein Fluid zu simulieren. Wichtig für die Simulation des Fließverhaltens in Silos ist allerdings, dass die Ergebnissen den realen Verhältnissen möglichst genau entsprechen und somit aufwändige Realversuche ersetzen können.

Gehen wir z.b. von Mehl in einem Bäckereisilo aus, dann würde sich unter den in meinem letzten Beispiel gegebenen Bedingungen eine starke Tendenz zum Kernfluß ergeben, was dazu führen würde, dass die Partikel an den Seitenwänden des Ausgangs "anbacken" würden (teils über Jahre). Wenn nun so ein 2 Jahre alter Mehlbrocken nach sporidisch mitgerissen würde, kann sich jeder vorstellen, was das für die Brötchen am Ende bedeuten würde (lecker) ;) Es ist also wichtig, dieses Verhalten auch in einer Simulation als Ergebnis zu erhalten.

Natürlich wird man unter solchen Bedingungen in einer Simulation immer noch modellieren müssen, denn mit 10 Milliarden unterschiedlich geformten Partikel wird kein System rechnen können.

AlecWhite
2010-11-11, 22:10:32
Die Frage lässt sich einfacher beantworten, wenn du in der Lage bist abzuschätzen, inwiefern sich die Berechnungen parallelisieren lassen. Der Power, die in den GPUs steckt, lässt sich nicht nutzen, wenn die gesamte Berechnung sequentiell erfolgt.

Huhamamba
2010-11-12, 03:21:40
Die Fluid Techdemos auf youtube habe ich mir bereits angeschaut, denke aber, dass die Genauigkeit hier für meinen Zweck nicht ausreichend wäre. Diese Fluide werden so wie ich das verstanden habe aus mit geleartigen Eigenschaften ausgestatteten Würfeln aufgebaut, welche im Nachhinein optisch weich gezeichnet werden um ein Fluid zu simulieren. Wichtig für die Simulation des Fließverhaltens in Silos ist allerdings, dass die Ergebnissen den realen Verhältnissen möglichst genau entsprechen und somit aufwändige Realversuche ersetzen können.
Dann wirst du denke ich für die nächste Zeit mit keiner Grafikkarten zufriedenstellende Ergebnisse erwarten können. ;)

Imho sieht Lagoa in Softimage (http://www.youtube.com/watch?v=jLxVtVKK-7E) recht vielversprechend aus, aber keine Ahnung ab wie vielen Partikeln die CPU da schlapp macht. Sicher schneller als die GPU, dafür aber mit brauchbarer Präzision. :confused: