|
micro |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 23.01.08
|
|
|
|
Wohnort: Kiel
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.01.2008, 22:06
Titel: Parallele Programme
|
|
|
|
|
Hi!
Kenne mich mit Matlab noch nicht sonderlich gut aus und stehe daher vor einem Problem, welches sich hoffentlich leicht lösen lässt:
Ich möchte verschiedene Programme (jedes auf eigenem MatLab / Rechner) parallel laufen lassen. Nun speichert ein Programm regelmäßig Daten (als *.mat-file), auf die das andere Programm wiederum regelmäßig zugreift. Wie kann ich nun verhindern, dass das eine Programm gerade in dem Moment versucht, die Daten auszulesen, in dem das andere Programm diese gerade speichert, da das ja eine Fehlermeldung incl. Abbruch zur Folge hätte. Ich möchte das *.mat-file also quasi solange blockieren (mit einem flag oder ähnlichem), bis der Speichervorgang abgeschlossen ist bzw. das zugreifende Programm soll in diesem Fall nicht abbrechen, sondern es einfach 1-2 Sekunden später nochmal probieren (möchte die Programme untereinander nicht als Funktion aufrufen und die Werte übergeben, da sie parallel laufen sollen. Für Vorschläge zu dem "Zugriffsproblem" oder auch allgemein, wie man am besten Programme parallel ablaufen lässt (und sie trotzdem synchronisiert...) wäre ich sehr dankbar!
Grüsse
micro
|
|
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 23.01.2008, 23:43
Titel:
|
|
Hmm keine Ahnung wie sich das am besten regeln lässt, hängt vermutlich auch vom verwendeten Dateisystem ab.
Mir fällt folgender workaround ein:
Zu jedem mein_workspace_X.mat legst du auch noch eine kleine ascii datei an, zB mein_workspace_X.txt oder so.
Wird das mat-file überschrieben, so wird zuerst die txt datei gelöscht, dann das mat file erstellt und danach die txt-datei wieder geschrieben. (eventuelle genauso bei lese-zugriff).
Will nun ein anderes Programm auf das mat-file zugreifen, so muss zuerst geprüft werden, ob die txt datei besteht: txt datei löschen, mat file lesen oder schreiben , txt datei erstellen. Besteht die txt datei nicht, dann kommt eine kleine warteschleife...
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 24.01.2008, 09:43
Titel:
|
|
Zitat: |
Wie kann ich nun verhindern, dass das eine Programm gerade in dem Moment versucht, die Daten auszulesen, in dem das andere Programm diese gerade speichert, da das ja eine Fehlermeldung incl. Abbruch zur Folge hätte. |
Deine Sorgen sind Grundlos, denn MATLAB ist nicht parallelfähig!
Es sei denn wir sprechen von 2 MATLAB sessions die gleichzeitig gestartet wurden (zB. eine Session pro CPU auf einem DualCore Rechner). Dann müssen Mechanismen eingebaut werden, die den Zugang zum File untereinander aushandeln.
MfG
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.029
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 24.01.2008, 09:49
Titel: Re: Parallele Programme
|
|
Moin outsider,
ich denke er hat zwei Matlab-Instanzen offen, die auf beide auf ein Netzlaufwerk zugreifen. Von daher muss wohl soetwas eingebaut werden, oder?
Ich denke der Vorschlag von Manuela müsste funktionieren.
micro hat Folgendes geschrieben: |
Ich möchte verschiedene Programme (jedes auf eigenem MatLab / Rechner) parallel laufen lassen. |
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 24.01.2008, 11:50
Titel:
|
|
Hi Steve,
stimmt - hast Recht... Habe übersehen...
Dann spricht nichts gegen Michaelas Vorschlag.
Damit es sogar noch schneller läuft (Schreibzugriffe auf die Platte sind ja bekanntlich nicht die schnellsten) würde ich vorschlagen einen RAM-Laufwerk anzulegen. Hinweise dazu gibt es viel im Netz (Stichword ramdrive.exe). Ist quasi eine virtuelle Festapltte die komplett im physischen RAM abgebildet wird und auch viel schneller arbeitet. Somit können die Schreibzugriffe verkürzt werden.
MfG
|
|
|
micro |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 23.01.08
|
|
|
|
Wohnort: Kiel
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.01.2008, 18:08
Titel:
|
|
Schon mal besten Dank für die schnellen Vorschläge!
Werd wohl erst nächste Woche dazu kommen, sie auszuprobieren...
(brauch das für ne HiWi-Tätigkeit an der Uni).
Schreib dann nochmal, obs geklappt hat!
Grüsse
|
|
|
|
|
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 - 2024
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.
|
|