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

Parallel Computing: Sliced output in Rekursion setzen

 

Michael P

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2010, 11:08     Titel: Parallel Computing: Sliced output in Rekursion setzen
  Antworten mit Zitat      
Guten Morgen,

ich bin hier am verzweifeln. Vielleicht kann mir ja hier jemand helfen, oder mir weitere Mühe ersparen indem man mir sagt, dass man mit Matlab folgendes Problem nicht angehen kann:

1. Ich habe als Berechnungsergebnis ein 5-dimensionales Array (mehrere GB groß).
2. Ich will das Array in einer Dimension slicen und die Scheiben parallel berechnen. Die Vorraussetzungen dafür sind erfüllt.
3. Soweit kein Problem. ABER: Das Ergebnis für eine Slice wird in einer Rekursion berechnet. Dabei wird in manchen Rekursionsschritten zu der aktuellen Slice ein Wert hinzuaddiert.
PROBLEM: Da die Rekursion nur über einen Funktionsaufruf zu machen ist, muss ich diese Slice in der Rekursionsfunktion, egal in welcher Rekursionstiefe, schreiben können. Ich kann dieses 4d slice natürlich nicht als Parameter der Rekursion übergeben (Speicherplatz, Overhead), sondern es muss quasi für den aktuellen Worker, der dieses slice berechnet, global sein (natürlich nicht für alle Worker).
Komplett globale Variablen sind ja nicht erlaubt. Gibts also so etwas wie für einen Worker "lokal globale" Variablen, so dass ich lokal für jeden Worker mit Rekursionen arbeiten kann?
Es gibt keine andere Möglichkeit für das Grundproblem ohne Rekursion. Prinzipiell muss eine parallele Berchnung für dieses Problem aber möglich sein, da die Berechnung in einer der 5 Dimensionen unabhängig von den anderen Dimensionen ist. Es kann auch nie zu dem Fall kommen, dass mehrere Worker gleichzeitig auf die selben Bereiche im Outputarray addieren wollen.

Diese Frage richtet sich glaub ich eher an die Experten unter euch. Hat jemand eine Idee?

Gruß, Michael


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.11.2010, 14:24     Titel: Re: Parallel Computing: Sliced output in Rekursion setzen
  Antworten mit Zitat      
Hallo Michael,

Zitat:
Das Ergebnis für eine Slice wird in einer Rekursion berechnet.

Man kann grundsätzlich jedes rekursive Programm auch nicht-rekursiv formulieren.

Zitat:
Ich kann dieses 4d slice natürlich nicht als Parameter der Rekursion übergeben (Speicherplatz, Overhead), ...

Warum geht das nicht?! Mit ein wenig Feinarbeit übergibt Matlab die Arrays per Reference. Siehe:
http://blogs.mathworks.com/loren/20.....memoize-costly-functions/
und
http://blogs.mathworks.com/loren/20.....place-operations-on-data/

Zitat:
Komplett globale Variablen sind ja nicht erlaubt.

Wieso sind die nicht erlaubt?

[qutoe]Es gibt keine andere Möglichkeit für das Grundproblem ohne Rekursion.[/quote]
Doch, siehe oben.

Gruß, Jan
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 - 2025 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.