Ich möchte eine parallele for-Schleife ausführen. Ich brauche jeden meiner Prozesse Zugriff auf 2 große Wörterbücher, gene_dict
und transcript_dict
. Das ist, was ich versucht zuerstJulia: Parallel For Schleife mit großen Daten verschieben
@everywhere(function EM ... end)
generefs = [ @spawnat i genes for i in 2:nprocs()]
dict1refs = [ @spawnat i gene_dict for i in 2:nprocs()]
dict2refs = [ @spawnat i transcript_dict for i in 2:nprocs()]
result = @parallel (vcat) for i in 1:length(genes)
EM(genes[i], gene_dict, transcript_dict)
end
aber ich bekomme die folgende Fehlermeldung auf alle Prozesse (nicht nur auf 5):
exception on 5: ERROR: genes not defined
in anonymous at no file:1514
in anonymous at multi.jl:1364
in anonymous at multi.jl:820
in run_work_thunk at multi.jl:593
in run_work_thunk at multi.jl:602
in anonymous at task.jl:6
UndefVarError(:genes)
Ich dachte @spawnat
die drei Datenstrukturen ich alle brauchen bewegen würde die Prozesse. Mein erster Gedanke ist vielleicht, dass diese Bewegung eine Weile dauert und die parallele for-Schleife versucht zu laufen, bevor die Datenübertragung abgeschlossen ist.
Ihre Lösung toll gearbeitet, als ich in einer interaktiven Sitzung julia arbeiten. Aber als ich versuchte, mein julia-Skript von der Konsole aus anzurufen, bekomme ich immer noch den Fehler, den ich erwähnt habe. Hast du eine Ahnung, warum das so ist? – bdeonovic
Ich sehe nicht, warum es einen Unterschied machen sollte. Was passiert, wenn Sie das Skript mit 'include (" stript.jl ")' aus einer interaktiven julia-Sitzung ausführen? –
es funktioniert dann auch – bdeonovic