6
多くの作業者に対して特定のタスクを並列化する必要があります。 そのためには、すべての作業者がデータを格納する行列にアクセスする必要があります。Juliaでの共有配列の使用
私は、データの移動を最小限に抑えるために、データアレイを共有アレイとして実装できると考えました。
私は共有配列を始めるためには、私は私を与える以下の非常に簡単な例をしようとしています、私が考えることは、予期しない動作である:
julia -p 2
# the data matrix
D = SharedArray(Float64, 2, 3)
# initialise the data matrix with dummy values
for ii=1:length(D)
D[ii] = rand()
end
# Define some kind of dummy computation involving the shared array
f = x -> x + sum(D)
# call function on worker
@time fetch(@spawnat 2 f(1.0))
最後のコマンドは私に次のエラーを与えます:
ERROR: On worker 2:
UndefVarError: D not defined
in anonymous at none:1
in anonymous at multi.jl:1358
in anonymous at multi.jl:904
in run_work_thunk at multi.jl:645
in run_work_thunk at multi.jl:654
in anonymous at task.jl:58
in remotecall_fetch at multi.jl:731
in call_on_owner at multi.jl:777
in fetch at multi.jl:795
私は共有配列Dがすべての作業者に見えるはずだと思いましたか? 私は明らかに何か基本的なものを欠いています。前もって感謝します。
_declaration_の共有に関する説明は非常に役に立ちます。ありがとう。 – user1438310