gpt4 book ai didi

parallel-processing - 如何在 Julia 中同时写入数组的多个索引?

转载 作者:行者123 更新时间:2023-12-03 23:43:17 26 4
gpt4 key购买 nike

我希望在 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之前 @distributed没有聚合器功能(见最后一个例子)。
  • 聚合分布式计算的结果
    using Distributed
    addprocs(4)
    arr = @distributed (append!) for i in 1:10
    [i]
    end
  • 关于parallel-processing - 如何在 Julia 中同时写入数组的多个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64499815/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com