|
|
Probleme mit handles bei Parallel Computing Toolbox |
|
Klein-janosch |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 23.09.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.09.2010, 17:10
Titel: Probleme mit handles bei Parallel Computing Toolbox
|
|
|
|
|
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
Beschreibung: |
|
Download |
Dateiname: |
matrix_test.zip |
Dateigröße: |
1.04 KB |
Heruntergeladen: |
507 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.09.2010, 10:05
Titel:
|
|
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
|
|
|
|
|
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.
|
|