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

Parallelisierung: parfor-Schleife in Funktion?

 

Barny.G
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 17.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2015, 19:15     Titel: Parallelisierung: parfor-Schleife in Funktion?
  Antworten mit Zitat      
Hallo hilfreiche Geister,

ich möchte gern einen code parallelisieren. Dabei ist der rechenaufwendige Teil in einer Funktion "versteckt". Dies läuft bisher in einer for -Schleife und könnte mit parfor parallelisiert werden.

Wenn ich den gesamten code im Hauptscript laufen lasse, klappt das auch sehr gut. Nur wird dieses dadurch sehr unleserlich, zumal ich dann auch noch auf die Variablen (Namen!) achten muss. Deswegen habe ich das alles in eine Funktion gepackt.

Wenn ich nun diese Funktion mit einer for -Schleife laufen lasse, funktioniert das super. (außer dass es quälend langsam geht) Wenn ich die parfor -Schleife nehme geht es nicht mehr.

Nun meine Frage: Kann man überhaupt in einer Funktion eine parfor -Schleife nehmen?

Falls Interesse besteht, kann ich auch ein Minimalbeispiel basteln - der "originale" code ist leider sehr umfangreich...

Viele Grüße

Thomas
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2015, 20:05     Titel: Re: Parallelisierung: parfor-Schleife in Funktion?
  Antworten mit Zitat      
Barny.G hat Folgendes geschrieben:
Wenn ich nun diese Funktion mit einer for -Schleife laufen lasse, funktioniert das super. (außer dass es quälend langsam geht) Wenn ich die parfor -Schleife nehme geht es nicht mehr.


Wie äußert sich denn geht es nicht mehr?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.07.2015, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

man kann parfor in Funktionen haben, man kann aus parfor Funktionen aufrufen - grundsätzlich gibt es in der Hinsicht keine Beschränkungen.

Zitat:
Falls Interesse besteht, kann ich auch ein Minimalbeispiel basteln

Das wäre sehr hilfreich.

Grundsätzlich siehe auch
http://de.mathworks.com/videos/seri.....ting-tutorials-97719.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Barny.G
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 17.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2015, 11:00     Titel:
  Antworten mit Zitat      
Vielen Dank für die Hinweise!

Also der Fehlercode lautet:

Code:
Error stack:
MeineUnterFunktion.m at 48   %(m)eine umfangreiche Unterfunktion
FxGL>(parfor body) at 61      %meine Funktion, die ich parallelisieren möchte

Error in FxGL (line 60)
    parfor j = 1:length(wj)

......


Kann damit "jemand" was anfangen? Btw. ich suche weiter nach dem Fehler und poste ihn dann hier, wenn ich ihn zuerst finden sollte Wink

Viele Grüße

Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Barny.G
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 17.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2015, 11:07     Titel:
  Antworten mit Zitat      
Ach ich bin doch selber schuld. Die Antwort liegt ja auf der Hand:
Zitat:
Code:
Error stack:
MeineUnterFunktion.m at 48   %(m)eine umfangreiche Unterfunktion


Wenn ich (m)eine Unterfunktion falsch aufrufe, dann kann es ja nix werden.

Der Fehler sitzt wie immer davor...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.07.2015, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

dazu dann auch ein Tipp:
Das Debuggen ist meist sequentiell (also mit for statt parfor) einfacher. Man muss ja nicht alle Iterationen durchlaufen lassen.

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.