2017-11-18 1 views
0

In den folgenden DateienJulia: mit @parallel für oder pmap innerhalb Kind/Submodule

test.jl

push!(LOAD_PATH, string(pwd(), "/lib/")) 
@everywhere using Parent 
addprocs(2) 
Parent.Child.test() 

lib/Parent.jl

@everywhere module Parent 
    struct INT 
     i::Int64 
    end 
    include("Child.jl") 
end 

lib/Kind. jl

module Child 
    import Parent 
    function test() 
     a = [1, 2, 3, 4, 5] 
     @parallel (+) for x in a 
      i = Parent.INT(x) 
      println(x) 
      x 
     end 
    end 
end 

Ich bekomme folgende erro rs:

% julia test.jl 
ERROR: ERROR (unhandled task failure): On worker 3: 
UndefVarError: Parent not defined 

Verwendung entweder @parallel für oder pmap würden die gleichen Fehler bekommen.

Wenn ich jedoch alles außerhalb von Modulen platziere, dann funktionieren die Codes gut.

Entfernen von "addprocs (2)" dann funktioniert auch alles gut.

Mein Projekt besteht aus vielen Modulen und Submodulen und würde gerne die modulare Struktur behalten. Allerdings bin ich Julia sehr neu und weiß wahrscheinlich nicht, wie ich das richtig machen soll. Was mache ich hier falsch?

+0

sein fand ich auch, dass Funktionstest setzen() in Parent-Modul und das Kind Modul komplett zu entfernen, den gleichen Fehler gibt. –

Antwort

1

Ich löste mein Problem!

addprocs(2) 

braucht erstes, was auf test.jl

Verwandte Themen