2017-11-18 117 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