Ich habe vor kurzem begonnen, Parallelverarbeitung in Julia zu studieren, und ich habe ein Problem, das ich wirklich nicht verstehe, wie man repariert.Parallele Verarbeitung: @Everywhere, Verteilungen und Typen
Nachdem ich Julia mit julia -p 4
ausgeführt habe, möchte ich das Distributionsmodul in allen Prozessen laden und ich möchte einen Typ definieren, der von Distributionen abhängt.
folgende Arbeiten scheinbar korrekt, wenn ich es enthalten:
@everywhere using Distributions
type TypeDistrib{T <: Float64}
d::Distributions.Normal{T}
end
Wenn ich genau den gleichen Code wie ein Modul schreiben, dann tut es nicht:
module test
@everywhere using Distributions
type TypeDistrib{T <: Float64}
d::Distributions.Normal{T}
end
export TypeDistrib
end
Die oben folgendes gibt Fehlermeldung:
ERROR: LoadError: UndefVarError: Distributions not defined in include_from_node1(::String) at ./loading.jl:488 in include_from_node1(::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:? while loading /***/test.jl, in expression starting on line 4
bitten Sie klären, was ich nicht richtig hier tue?
Hinweis: Ich habe den vollständigen Pfad in der Fehlermeldung mit *** ersetzt, da es verwirrend war.
Dies ist wahrscheinlich, was es sein sollte. Es ist jedoch nicht klar, warum genau der Code, den ich geschrieben habe, nicht funktioniert. Könntest du bitte etwas genauer erklären? – merch
'using Distributions' wird so ausgewertet, als wäre es im Hauptmodul geschrieben, und' Distributions.Normal {T} 'wird im' test' Modul gesucht (wo es definiert ist) und wird daher nicht gefunden. Zum Beispiel funktioniert 'Main.Distributions.Normal {T}' in 'test' wie in der Frage definiert. –