2017-11-18 144 views
0

在以下文件朱莉婭:使用@parallel的或PMAP裏面的孩子/子模塊

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 /兒童。 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 

我得到以下埃羅rs:

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

使用@parallel for或pmap會得到相同的錯誤。

但是,如果我把任何模塊以外的所有東西,那麼代碼工作正常。

刪除「addprocs(2)」,那麼一切工作正常。

我的項目由許多模塊和子模塊組成,並希望保留模塊化結構。但是,我對Julia很新,可能不知道如何正確使用它。我在這裏做錯了什麼?

+0

我還發現,把功能測試()在父模塊和消除兒童模塊共給出了同樣的錯誤,第一件事情。 –

回答

1

我解決了我的問題!

addprocs(2) 

必須在test.jl