Wie schreibt man eine Parallelschleife in Julia?

8

Ich habe den folgenden Julia Code und möchte ihn parallelisieren.

%Vor%

Die Ausgabe ist DistributedArrays.DArray[] . Ich möchte den Wert von y wie folgt haben: y=[1,4,9,16,...,10000]

    
Kira 20.10.2015, 02:29
quelle

2 Antworten

3

Hallo Kira,

Ich bin neu bei Julia, habe aber das gleiche Problem. Versuchen Sie diesen Ansatz und sehen Sie, ob er Ihren Anforderungen entspricht.

%Vor%

Grüße, RN

    
RgrNormand 20.10.2015, 16:49
quelle
9

Sie können n-dimensionale verteilte Array-Comprehensions verwenden:

Zuerst müssen Sie einige weitere Prozesse hinzufügen, entweder lokal oder remote:

%Vor%

Dann müssen Sie DistributedArrays bei jedem der erzeugten Prozesse verwenden:

%Vor%

Schließlich können Sie das Makro @DArray wie folgt verwenden:

%Vor%

Sie können sehen, dass es das tut, was Sie erwarten:

%Vor%

Denken Sie daran, dass es mit einer beliebigen Anzahl von Dimensionen funktioniert:

%Vor%

Dies ist der julianischste Weg, um das zu tun, was Sie IMHO wollten.

Wir können uns die Ausgabe von macroexpand ansehen, um zu sehen, was passiert:

Hinweis: Diese Ausgabe wurde zur besseren Lesbarkeit leicht überarbeitet, T steht für:

%Vor% %Vor%

Was im Grunde dasselbe ist wie manuell eingeben:

%Vor%     
SalchiPapa 20.10.2015 17:13
quelle