In diesem Teil des Codes:
@everywhere function Jacobi_blockwise_parallel_one_time_step(A,x,y,k,threshold)
if k <= threshold
Jacobi_serial_one_block_one_time_step(A,x,y,k)
else
k1 = floor(Int64, k/2)
k2 = k - k1
if (k1 != k2) error("This case is not supported yet") end
lrefs = [@spawn Jacobi_blockwise_parallel_one_time_step(A,x,y,k1,threshold),
@spawn Jacobi_blockwise_parallel_one_time_step(A,x+k1,y,k1,threshold),
@spawn Jacobi_blockwise_parallel_one_time_step(A,x,y+k1,k1,threshold),
@spawn Jacobi_blockwise_parallel_one_time_step(A,x+k1,y+k1,k1,threshold)];
pmap(fetch, lrefs)
end
end
Wenn Sie es das erste Mal mit k nennen = N-2 (dh für N = 2048 diese den Fehler für mich löst), k = 1023 und Wenn Sie zu den 'spawn'-Anweisungen kommen, wird im zweiten Aufruf' k '511 und k2 wird 512, so dass dieser Fehler ausgelöst wird.
Interessanterweise wird der Fehler nicht angezeigt, wenn Sie ausführen, ohne zuerst zusätzliche Arbeitsprozesse hinzuzufügen. Vermutlich verhält sich das @ spawn-Makro anders/unerwartet, wenn es keine definierten Worker gibt, bin ich mir nicht sicher. Wie auch immer, ich glaube nicht, dass das lrefs
Bit tut, was der Autor denkt, dass es tut (vielleicht tat es in einer älteren Version von Julia?)
Dies ist kein Fehler von Julia. Jacobi_parallel ist eine Funktion, die in der Datei definiert ist, mit der Sie verbunden sind, und der spezielle Fehler ist darin fest codiert. Suchen Sie nach dem Ausdruck "Dieser Fall wird noch nicht unterstützt" auf der Seite und Sie werden es sehen. (BEARBEITEN: hm, der Fehler macht auch keinen Sinn in Bezug auf die Berechnungen. Vielleicht gibt es eine unerwartete Konvertierung, um an einem bestimmten Punkt zu schweben) –
Welche Version von Julia benutzt du? Der Code scheint für eine etwas ältere Version zu sein (plus ein paar "seltsame Sachen", aber, na ja) ... nachdem ich ein paar Inkompatibilitäten behoben hatte, lief das Skript für mich auf dem neuesten Stable (v0. 5.2). (ich habe 'ifloor (k/2)' in 'floor (Int64, k/2)' und 'error (' in 'error (') –
@TasosPapastylianou geändert, ich benutze auch Version 0.5.2, ich habe diese Änderungen aber übernommen Es hat den vorherigen Fehler: Dieser Fall wird noch nicht unterstützt – Armaa