我正在尝试为并行计算编写一个简单的 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
但是,我收到此错误消息。
ERROR: LoadError: On worker 2:
UndefVarError: #test not defined
我认为@everywhere 宏不能正常工作。
我正在使用 Julia 0.6.0。
有谁知道如何修理它?
最佳答案
@everywhere
和 addprocs
顺序相反(导致添加的 worker 不知道函数 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
关于julia - 如何在简单的 Julia 代码中使用 @everywhere 宏进行并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657667/