|
|
Gleichzeitige Ausführung zweier m-files mit Parallel Comp T |
|
joh_bimaq |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.11.2009, 09:00
Titel: Gleichzeitige Ausführung zweier m-files mit Parallel Comp T
|
|
|
|
|
Moin zusammen,
ich habe eine Frage zur Parallel Computing Toolbox. Ich konnte das aus der Matlab-Anleitung leider nicht eindeutig herausfinden.
Hier mein Problem:
Ich habe zwei Funktionen. Die eine bekommt kontiunierlich Messdaten von meinem Messaufbau. Die andere soll diese Messdaten in bestimmten Zeitschritten anrufen und damit eine Regelung ausführen.
Das Problem ist, dass das Messfunktion die ganze Zeit über aktiv ist, so also die Konsole dauerhaft blockiert. Bisher liefen diese Programme unabhängig voneinander, ich möchte sie nun aber zu einem Prozess zusammenfügen.
Gibt es eine Möglichkeit mit der Parallel Computing Toolbox diese beiden Programme parallel auszuführen? Am besten natürlich auf unterschiedlichen Cores.
Oder ist die Toolbox nur dafür da, dass bestimmte Programmteile (for schleifen, usw.) auf mehreren Prozessoren gleichzeitig ausgeführt werden?
Ich habe schon dieses Tutorial ausprobiert :
http://iheartmatlab.blogspot.com/20.....unications-in-matlab.html
Hat mit einseitiger Kommunikation auch hingehauen, da ich aber noch gar keine Java-Erfahrung habe, würde ich lieber auf eine Matlab-interne Funktion zugreifen, bevor ich das ganze auf meine Problemstellung umstricke.
Mfg
Andre
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.11.2009, 09:17
Titel:
|
|
|
|
joh_bimaq |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.11.2009, 12:43
Titel:
|
|
Vielen Dank für die rasend schnelle Antwort.
Hab mal als erstes die Batchversion für eine kleine Testfunktion ausprobiert und konnte diese Funktion zwei mal gleichzeitig ausführen. Ich denk, damit kann ich gut arbeiten.
Hatte das mit dem batch auch schon mal gelesen, aber die Funktion die du verlinkt hattest war deutlich verständlicher als das was ich hatte.
Ich werde die anderen auch noch mal ausprobieren.
Weißt du, ob die Cores meiner CPU automatisch zugewiesen werden, oder ob ich beide Funktionen "per Hand" auf unterschiedliche Cores legen kann.
mfg
Andre
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.11.2009, 13:00
Titel:
|
|
Hallo,
die Zuweisung wird automatisch vom Betriebssystem im Zusammenspiel mit der Hardwareübernommen.
Überprüfen kannst du das im (Windows) Task Manager. Bei einem Dual Core solltest du folgendes sehen:
Normales MATLAB-File laufen lassen -> Auslastung i.d.R. max. 50%
Parallelen Algorithmus laufen lassen -> Auslastung sollte 100% erreichen
Grüße,
Harald
|
|
|
joh_bimaq |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.11.2009, 13:07
Titel:
|
|
Moin,
hast recht, volle 100% Auslastung. Perfekt.
Vielen Dank nochmal
Andre
|
|
|
joh_bimaq |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.11.2009, 16:21
Titel:
|
|
Moin nochmal,
ich hab mich mal mit den anderen beiden optionen auseinandergesetzt.
Wenn ich nichts falsch verstanden habe, sind diese aber nicht für meine Problemstellung geeigent.
Die spmd (Single Program Multiple Data) Umgebung berechnet nur ein einziges Programm auf mehreren labs , in denen dann Parameter des Programms variiert werden können. Sie lässt mich aber nicht zwei verschiedene Programm ausführen, die dann kommunizieren können.
Die "labSend" und "labReceive" Befehle sind direkt für die Kommunikation zwischen den oben genannten Labs.
Hab ich das richtig verstanden, oder noch was übersehen?
mfg
Andre
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.11.2009, 17:40
Titel:
|
|
Hallo,
innerhalb von spmd oder createParallelJob kannst du mit
dafür sorgen, dass in den beiden Labs tatsächlich unterschiedliche Sachen gemacht werden.
Z.B. können diese Zweige dann labSend oder labReceive zur Kommunikation enthalten.
Grüße,
Harald
|
|
|
joh_bimaq |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.10.2010, 15:21
Titel:
|
|
Moin,
ich bin mal wieder bei dem Thema Parallel Computing angelangt. Ich schaffe es einfach nicht, dass sich zwei parallel laufende Programme unterhalten können. Ich hab mir mal ein Testprogramm geschrieben:
Hauptdatei:
batch_func
Die parallel ausgeführte datei soll eigentlich nur den labSend Befehl ausführen.
Das Problem ist, dass mir mit dem createTask Befehl gar keine 2 labs aufgemacht werden, so dass der LabSend Befehl nur die Fehlermeldung
??? Error using ==> labReceive
Attempt to receive would cause deadlock: numlabs == 1
auswirft. Hierbei ist es auch egal, ob ich in der batch_func "labSend(data,2, 33)" oder "labSend(data,1, 33)" schreibe.
Weiß einer, wie ich das Problem lösen kann?
Grüße
Andre
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.10.2010, 21:35
Titel:
|
|
Hallo,
Es müssen (mindestens) zwei Worker sein. Wie soll sonst die Kommunikation stattfinden?
labSend und labReceive müssen auf derselben Ebene sein.
Beispiel:
Grüße,
Harald
|
|
|
VakiMoon |
Forum-Anfänger
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 13.02.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.03.2013, 16:20
Titel:
|
|
Hey,
ich habe das gleiche Problem. geht das vielleicht aber auch ohne parallel computing toolbox?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.03.2013, 21:11
Titel:
|
|
Hallo,
welches "Problem" hast du genau?
Grüße,
Harald
|
|
|
Daniel88 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.12.2016, 14:05
Titel: 2 funktionen parallel ohne toolbox möglich?
|
|
|
|
|
Hallo,
ich glaube ich habe ein ähnliches Problem wie der TO.
ich steure einen Sphäre (kleiner Kugelroboter) mit Matlab und will seine position an ein anderes Tool senden Welchen Quellen in einer 3d Audio Umgebung an die position des Seheros setzt. Soweit so gut zu Erklärung. Das funktioniert auch alles. Jetzt zu meinem Problem: Wenn ich dem Roboter den Fahrbefehl gebe, geht Matlab für ca. 1 Sek in "busy" was jegliche andere Funktion blockiert, wenn ich das richtig verstanden habe. Somit verzögert sich der positionsbefehl immer um ca. eine Sekunde wo er fährt. Sprich fahren, Quelle an neue position, fahren, Quelle... usw.
Sprich es ist abgehackt und alles andere als Smooth.
Wie kann ich jetzt diese beiden Funktionen parallel laufen lassen, also ich lasse ihn permanent fahren(viele fahrbefehle die immer wieder busy hervorrufen) und das ich permanent die aktuelle position meines Robs Senden kann, ohne warten zu müssen bis der Fahrbefehl durch ist?!
Hoffe das ist irgendwie verständlich und mir kann jemand helfen.
LG
Daniel
hier ein kurzes Beispiel.
|
|
|
|
|
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.
|
|