如何在简单的Julia代码中使用@everywhere宏进行并行计算

时间:2017-08-13 06:14:29

标签: julia

我正在尝试为并行计算编写一个简单的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。

有谁知道如何修复它?

1 个答案:

答案 0 :(得分:5)

@everywhereaddprocs的顺序相反(导致添加的工作人员不了解函数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