Verfasst am: 17.03.2012, 10:04
Titel: Welche Parallelisierungsmethode sollte ich nutzen?
Hallo,
ich will eine Berechnung auf 8 Prozessoren verteilen - paralelisieren. Da ich es noch nie gemacht habe und gelesen habe, dass es mehrere Möglichkeiten gibt, würde ich um Hilfestellung bitten.
Problemstellung: ich habe eine Objectarray (user defined objects) mit bis zu 500.000 Objekten. Diese sollen lokal auf 8 Kerne verteilt und auf für jedes Objekt soll ein set an, im Objekt implementierten, Methoden ausgeführt werden. Natürlich sollen dann die Ergebnisse zu dem Client wieder geholt werden.
Welche parallelisierungsmethode wäre jetzt zu verwenden? parfor, spmd, jobs&tasks?
schwierig für mich da durchzublicken.
Falls du das nicht mit genauem Hinschauen selbst lösen kannst, könnte es einfacher sein, es mal mit Jobs und Tasks zu versuchen. Dabei darauf achten, dass die Anzahl der Tasks nicht um Größenordnungen größer wird als die Anzahl der Kerne - hier würde ich es mit 16 bis 32 Tasks versuchen (hängt natürlich auch von der Gesamtlaufzeit ab).
1) wenn ich das Script ohne matlabpool starte, alles wird korrekt ausgeführt. D.h. die Properties der Objekte sind korrekt gesetzt.
2) wenn ich das Script mit matlabpool starte, dann kann ich sehen, dass alle Kerne arbeiten. Auch die Bearbeitungszeit ist viel kürzer. Allerdings sind die Properties der Objekte nicht korrekt gesetzt. Schient für mich so zu sein, als wären diese nicht von externen Labs in Client geholt worden.
Kann man hier noch was machen? Oder soll ich einen anderen Weg gehen?
da müsste ich selber genauer nachlesen. Um eine schnelle Antwort zu geben: ich würde die Lösung auf diesen Seiten vermuten:
http://www.mathworks.de/help/toolbox/distcomp/bq__cs7-1.html
(Interessant sind alle Teile, die sich auf "handle" beziehen; kannst du mit Strg-F suchen)
Handle Classes
Changes made to handle classes on the workers during loop iterations are not automatically propagated to the client.
Zitat:
Using Objects in parfor Loops
If you are passing objects into or out of a parfor-loop, the objects must properly facilitate being saved and loaded. For more information, see Saving and Loading Objects.
(Link auf den zweiten Link)
Wie man das Problem nun löst, wurde mir auf die Schnelle aber auch nicht klar. Müsste ich bei Gelegenheit nochmal genauer schauen.
PS: Ich habe aber ein neues Problem. Dazu werde ich ein neues Ticket öffnen.
LG
joekey
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
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.