|
|
Auf externes Programm warten... machmal. |
|
DeepFritz |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 31.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.08.2015, 13:15
Titel: Auf externes Programm warten... machmal.
|
 |
|
 |
|
Hallo zusammen,
mein Problem ist eigentlich zwar simpel, es erklärt sich aber ein bisschen umständlich. Ich versuche es mal.
Folgendes Ziel:
ich möchte aus Matlab heraus mehrere parallel rechnende Instanzen einer Simulationssoftware starten. Nach Ablauf der Simulationen sollen die Ergebnisse in einem Postprocessor (ebenfalls ein externes Profgramm) aufbereitet werden. Auch diese Aufbereitung in den Postprocessoren soll parallelisiert erfolgen. Die Postprocessoren sollen ebenfalls von Matlab gestartet werden.
Mein Problem ist nun folgendes:
Starte ich die Simulation (mit "system") ohne ein angehängtes "&", wartet Matlab bis die Simulation durchgelaufen ist, bevor es die nächste Instanz startet. Die Parallelisierung der Rechnungen funktioniert so also nicht.
Starte ich die Simulationen mit angehängtem "&", kann ich zwar mehrere Simulationsinstanzen unmittelbar nacheinander starten, die Parallelisierung der Simulationen funktioniert also.
Aber: wie sorge ich dafür, dass die Postprozessoren dann erst starten, wenn die jeweiligen Simulationen durchgelaufen sind?
Die Dauer der Simulation ist leider nicht vorhersehbar und die verschiedenen Simulationsinstanzen können auch stark unterschiedliche Laufzeiten haben.
Was ich erreichen muss ist also, dass Matlab eine Simulationsinstanz startet und währenddessen normal weiter läuft, dass aber andererseits der Postprocessor erst gestartet wird, wenn die Simulationsinstanz beendet wurde.
Könnt ihr mir da evtl helfen?
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.08.2015, 13:30
Titel:
|
 |
Hallo,
falls die Ergebnisse beispielsweise in einer Datei abgespeichert werden sollen, könnte man abfragen, ob die Datei bereits existiert.
Ansonsten müsstest du uns sagen, woran man dann erkennen kann, ob die Simulation beendet ist.
Grüße,
Harald
|
|
|
DeepFritz |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 31.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.08.2015, 11:16
Titel:
|
 |
Vielen Dank erstmal!
Prinzipiell funktioniert das so weit. Allerdings habe ich jetzt das Problem, dass die Erzeugung der Datei, in der die Ergebnisse gespeichert werden, sehr lange dauert. Die Dauer ist leider auch nicht einheitlich. Bei manchen Rechnungen dauert es nur zwei, drei Sekunden, bei anderen geht schonmal eine halbe Minute oder mehr in's Land.
Gibt es evtl noch eine Möglichkeit zu prüfen, ob eine Datei gerade von einem anderen Programm geöffnet ist?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.08.2015, 11:30
Titel:
|
 |
Hallo,
da kann man höchstens sowas versuchen:
Grüße,
Harald
|
|
|
DeepFritz |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 31.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.08.2015, 18:08
Titel:
|
 |
Das hat leider nicht funktioniert.
Anscheinend kann Matlab die Datei auch öffnen/schreiben, wenn sie noch gar nicht fertiggestellt ist.
Ich habe den Aufruf des Post-Prozessors jetzt in den Solver der Simulationssoftware ausgelagert. Prinzipiell habe ich das Problem damit aber nur verschoben, da ich die Ergebnisse aus dem Post-Prozessor ja nach Matlab importieren muss und auch das erst tun kann, nachdem der PostProzessor sie (vollständig) in ein File geschrieben hat.
Das Problem ist dort weniger gravierend, weil das Ergebnis-File des Postprozessors wesentlich schneller geschrieben wird als das des Solvers. Da reicht es, wenn ich ein
pause(1)
einbaue.
Sehr sympathisch ist mir diese Lösung aber nicht. Schließlich reicht dann schon eine kurze Störung (z.B. weil die Festplatte gerade unplanmäßig mit was Anderem beschäftigt ist), um den kompletten Programmablauf zu gefährden.
Wenn Du also noch weitere Ideen hast, immer her damit.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|