2017-08-13 29 views
3

我想爲並行計算編寫一個簡單的Julia代碼。如何在簡單的Julia代碼中使用@everywhere宏進行並行計算

我寫了一個基於這個文檔的簡單代碼: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。

有誰知道如何解決它?

回答

4

@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