我希望在 Julia 中看到类似的东西:
using Distributed
addprocs(4)
@everywhere arr = Array{Int}(undef, 10)
for i = 1:10
@spawn arr[i] = i
end
这样做的正确方法是什么?
您可以使用以下方法来并行化该过程。
-
线程(需要设置JULIA_NUM_THREADS
系统变量)
arr = Array{Int}(undef, 10)
Threads.@threads for i = 1:10
arr[i] = i
end
-
SharedArrays
using Distributed, SharedArrays
addprocs(4)
arr = SharedVector{Int}(10)
@sync @distributed for i in 1:10
arr[i] = i
end
请注意,一个常见的错误是忘记放置@sync
before @distributed
没有聚合器函数(请参阅最后一个示例)。
-
聚合分布式计算的结果
using Distributed
addprocs(4)
arr = @distributed (append!) for i in 1:10
[i]
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)