2017-08-13 8 views
3

並列計算用の簡単なJuliaコードを作成しようとしています。@everywhereマクロを並列計算用の簡単な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マクロが正しく動作しないと思います。

私はジュリア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 
関連する問題