WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme mit handles bei Parallel Computing Toolbox

 

Klein-janosch
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 23.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2010, 17:10     Titel: Probleme mit handles bei Parallel Computing Toolbox
  Antworten mit Zitat      
Hallo zusammen,

Ich habe ein Problem mit der Parallel Computing Toolbox von Matlab.
Ich will ein existierendes Programm so verändern, das einige Berechnungen in dem Programm parallel ablaufen.
Dabei habe ich das Problem, dass die parallel zu berechnende Funktion auf Datenobjekte mit handles zugreift. Durch das parallele Berechnen werden die Datenobjekte mitsamt den handles kopiert. Dadurch werden die handles verändert, da sie auf unterschiedliche Speicheradressen zeigen.
Am Schluss soll mit der Funktion ein neues Datenobjekt erstellt werden, dass alle berechneten Objekte der Funktion beinhaltet. Dieses kann jedoch nicht erstellt werden, da die Werte der handles nicht gleich sind und sich daher nicht zusammenfassen lassen.

Zur Verdeutlichung dieses Problems steht das Programm „test_matrix.m“ zur Verfügung. Dieses Programm verbindet auf mathematischem Wege zwei unterschiedliche Datentypen, die jeweils handles beinhalten. Am Schluss fragt das Programm ab, ob die jeweils berechneten Inhalte gleich sind. Ist dies nicht der Fall, so wird ein Fehler ausgegeben ('Matrix is not equal').
Dabei kann man beobachten, dass bei der Verwendung der for-Schleife für die Berechnung der Fehler nicht zu Stande kommt. Bei der Verwendung der parforschleife und der Parallelen Berechnung sind die Inhalte jedoch nicht mehr gleich.

Meine Frage lautet nun, ob es in der Parallel Computing Toolbox einen einfachen Befehl oder eine Funktion gibt, mit der ich dieses Problem aus der Welt schaffen kann.
Es wäre auch möglich, dieses Problem auf aufwendigere, schwierigere Weise im Programmcode zu umgehen. Dabei könnten zum Beispiel die handles neu geschrieben werden oder auf sonstiger Art und Weise wieder auf einen gleichen Wert gebracht werden. Dies möchte ich jedoch nach Möglichkeit vermeiden.

Grüße Klein-Janosch

matrix_test.zip
 Beschreibung:

Download
 Dateiname:  matrix_test.zip
 Dateigröße:  1.04 KB
 Heruntergeladen:  507 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.09.2010, 10:05     Titel:
  Antworten mit Zitat      
Hallo,

ich habe Zweifel, dass es da eine Lösung geben wird. Die Parallel Computing Toolbox ist so konzipiert, dass die Worker auch auf verschiedenen Rechnern laufen können. Spätestens dann macht es keinen Sinn mehr, mit Call-By-Reference zu arbeiten.
Ich gehe davon aus, dass das angehängte Beispiel wirklich nur ein Beispiel ist? Könnte man nämlich etwas übersichtlicher machen, indem man eine Klasse Matrix und eine Klasse Vektor jeweils mit Eigenschaft data macht, und eine Methode mult, die Matrix und Vektor entgegennimmt und Objekt Vektor zurückliefert.
Ein Hinweis noch: mit isequal würde man Gleichheit bekommen, da dann nicht auf die Adresse, sondern den dahinterliegenden Inhalt getestet wird. Aber das hilft wohl nicht?
Frage: gibt es in der Anwendung einen zwingenden Grund, warum mit Handle-Klassen gearbeitet wird?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.