我正在尝试为并行计算编写一个简单的Julia代码。
我根据此文档编写了一个简单的代码:https://docs.julialang.org/en/latest/manual/parallel-computing
@everywhere function test(x)
return x * 2.0
end
nprocess = 5
addprocs(nprocess)
responses = Vector{Any}(nworkers())
for i in 1:nworkers()
responses[i] = remotecall(test, i+1, i)
end
for res in responses
wait(res)
end
但是,我收到此错误消息。
错误:LoadError:在工人2上:
UndefVarError:#test未定义
我认为@everywhere宏无法正常工作。
我使用的是Julia 0.6.0。
有谁知道如何修复它?
答案 0 :(得分:5)
@everywhere
和addprocs
的顺序相反(导致添加的工作人员不了解函数test
)。另一种方法是工作,而不是UndefVarError
:
nprocess = 5
addprocs(nprocess)
responses = Vector{Any}(nworkers())
@everywhere function test(x)
return x * 2.0
end
for i in 1:nworkers()
responses[i] = remotecall(test, i+1, i)
end
for res in responses
wait(res)
end