Ist Single Thread optimierung für Multicore CPUs als User möglich?

Fawk

Ensign
Registriert
Nov. 2013
Beiträge
233
Hallo Zusammen, ich hätte heute mal ein etwas spezielleres Problem, zu welchem ich Euren Rat bräuchte ...

Und zwar arbeite ich sehr viel mit Blender, welches als solches Multithreading unterstützt und nutzt.

Das große Problem ist allerdings, dass Physikberechnungen (in diesem speziellen Fall Partikel mit Physiksimultaion) auf einen einzigen Thread/CPU-Kern beschränkt sind ... was wirklich derbe übel ist, da ich aktuell an einem Projekt mit knapp 1 Mio. Partikeln arbeite und mein CPU (Xeon E3-1241) auf Grund seiner 8 virtuellen Kerne (4 Kerne + Multithreading) beim Baking/Berechnen der Physik nur zu einem Achtel ausgelastet ist bzw. 8 mal länger braucht, als es mit voller CPU-Auslastung machbar wäre :/

Darum meine Frage, ob es irgend eine Möglichkeit gibt, die verfügbaren Kerne/Threads mit einem Tool oder Windowsboardmitteln zu bündeln, oder ob das ausschließlich von den Blender-Programmierern verbessert/gelöst werden kann.

Blender unterstützt bei solchen Berechnungen bisher leider weder CUDA (habe eine GTX 1070 OC) noch OpenCL :(

Grüße

P.S.: Ich nutze Win 7 Pro x64, da Windows 10 es schon mehrfach geschafft hat, schon stunden lang laufende Berechnungen mit seinem verf**ten "Ich downloade und installiere jetzt einfach mal Updates im Hintergrund und scanne direkt im Anschluss mit dem Defender..." zu zerschroten.
 
Nicht möglich. Wenn du Pech hast können das nichtmal die Blender Programmierer (Amdahl's Law)
 
Es ist sehr schwer bis unmöglich die Physik in so einem Fall parallel (auf mehreren Kernen) zu berechnen, da
1) alles sequentiell ablaufen muss
2) jeder Partikel mit jedem interagieren kann

Eine Aufteilung wäre nur möglich, wenn man vorher weiß welche Teile komplett eigenständig sind.

Edit: Oder man braucht sehr viel Datenaustausch zwischen den Threads, was natürlich stark gegen den Vorteil von Multithreading arbeitet.
 
Zuletzt bearbeitet:
Schade, habe ich mir fast gedacht. Da solche Physikberechnungen nur linear (geradliniger Zeitablauf) und nicht verteilt möglich sind, wäre die einzige mögliche Lösung/Alternative warscheinlich wirklich nur die Nutzung von Nvidia PhysiX, was aber wohl auf Grund von Lizenskram/Properität (wird das so geschrieben?^^) nicht passieren wird. :/ Trotzdem Danke
Ergänzung ()

Hatte AMD früher nicht mal bei den Phenoms/Athlons eine Technik, die bei Bedarf alle Kerne zu einem großen Virtuellen bündeln konnte, oder habe ich das falsch in Erinnerung?
 
Wäre geil, dann wären alle Probleme, die aktuelle Software hat, mit einem Schlag gelöst, und wir würden alle Knights Landing im Rechner haben.
 
Man kann so etwas zumindest teilweise parallel berechnen, wenn man kleinere Fehler bei der Berechnung erlaubt.

In vielen Fällen wird dabei ein kleiner Zeitschritt für jeden Partikel berechnet, in denen eine Interaktion mit einen anderen Partikel ausgeschlossen ist. Die Kunst dabei ist es dann, die Zeitschritte für die Parallelisierung hinreichend groß zu wählen aber aber klein genug, damit die Fehler zu vernachlässigend sind.
 
Ja AMD hatte da was. Da wurde Code spekulativ auf mehreren CPU Kernen ausgeführt. ABer hat sich nie durchgesetzt, war wohl nix, ein Schuß in den Ofen.
 
Zurück
Oben