2016-08-04 16 views
0

Können Sie mir erklären, warum der folgende Code mit parfor in Matlab nicht funktioniert und wie man es beheben?Zweifel mit Parfor in Matlab?

R=10; 
Power=zeros(2,R); 
parfor s=1:R 
    Power(1,s)=1 
    Power(2,s)=2; 
end 

Antwort

3

Es funktioniert nicht, weil Sie 1 Variable haben, die unterschiedliche Arbeitnehmer (power) gesendet wird und Sie es mit verschiedenen Kernen schreiben möchten.

Wie kann man in der gleichen Variable mit verschiedenen Arbeitskräften schreiben? Wer speichert die Erinnerung? Wie kommunizieren die Mitarbeiter, wo sie geschrieben haben und wo nicht? Die Struktur des Codes ist sehr wichtig beim parallelen Rechnen, da Sie wissen müssen, welchen Speicher Sie an welchen Mitarbeiter senden. Wenn Sie bei der Übergabe von Variablen einen falschen Ansatz wählen, kann Ihr Code langsamer als der nicht parallele sein.

Der Code, den Sie zeigen können geändert werden:

R=10; 
Power1=zeros(1,R); 
Power2=zeros(1,R); 

parfor s=1:R 
    Power1(1,s)=1 
    Power2(1,s)=2; 
end 
Power=[Power1;Power2] 

empfehle ich Ihnen zu http://uk.mathworks.com/help/distcomp/parallel-for-loops-parfor.html gehen und die „Konzepte“ Abschnitt lesen, vor allem die variable types in parfors, dass die MATLAB Fehler führt Sie zu.