为每个worker使用不同的数组,而不是Julia中的SharedArrays

时间:2018-01-12 03:24:13

标签: parallel-processing julia

我有这样的功能:

@everywhere function bellman_operator!(rbc :: RBC)

    ...
    @sync @parallel for i = 1:m
        ....
        for j = 1:n
            v_max = -1000.0
            ...
                for l = Next : n
                    ......
                    if v > vmax
                        vmax = v
                        Next = l
                    else
                        break 
                    end

                end
                f_v[j, i] = vmax
                f_p[j, i] = k
          end
    end  

f_vf_p是sharedArrays,我想为每个工作者的结果提供不同的数组,我看到了一些示例,但我无法解决它。我如何使用数组来获得每个数据的结果工人最后结合结果而不是使用SharedArrays?

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

示例1.使用+

组合结果
a = @parallel (+) for i in 1:1000
    rand(10, 10)
end

示例2.只收集结果而不将它们合并:

x = Future[]
for i in 1:1000
    push!(x, @spawn rand(10,10))
end
y = fetch.(x)