【发布时间】:2016-06-27 07:58:33
【问题描述】:
我必须多次计算随机算法的结果。最后,我希望将所有结果都放在一个数组中。算法的执行是相互独立的。在 Julia 中,这可以通过这样的并行 for 循环轻松并行化:
@parallel (vcat) for i=1:10
rand() # or any other algorithm yielding a number
end
但是如果一个线程得到另一个线程的结果,并且在for循环的每次迭代之后合并两个结果,这似乎有点低效。 这个对吗?在这种情况下,可能是一个线程产生一个 100 元素的数组,另一个线程产生一个 200 元素的数组,这些数组合并成一个 300 元素的数组? 我可以以某种方式防止这种情况并重写上面的代码以防止多个数组分配,并且可能将在 for 循环中计算的结果放入预先分配的数组中吗? 或者我可以让归约算子更聪明吗?
【问题讨论】:
标签: multithreading parallel-processing julia