Parallel processing 并行运行mapslices
我使用Parallel processing 并行运行mapslices,parallel-processing,julia,Parallel Processing,Julia,我使用mapslices()为某个数组的每一行应用相同的表达式: function f(x) ... end a = rand(Normal(), 10000, 50) b = mapslices(x -> f(x), a, dims = [2]) 是否有一些优雅的方法可以使用所有CPU内核并行运行类似的过程?类似于在R中,您可以用future\u apply()替换apply(),这样所有内容都会自动并行化。或者mapsicles()根本不适合这里,需要使用其他结构?您
mapslices()
为某个数组的每一行应用相同的表达式:
function f(x)
...
end
a = rand(Normal(), 10000, 50)
b = mapslices(x -> f(x), a, dims = [2])
是否有一些优雅的方法可以使用所有CPU内核并行运行类似的过程?类似于在R中,您可以用
future\u apply()
替换apply()
,这样所有内容都会自动并行化。或者mapsicles()
根本不适合这里,需要使用其他结构?您可以使用@分布式循环编写此代码
以代码为例
using Distributed
addprocs(4)
a=collect(reshape(1:12,3,4))
现在:
julia> @distributed (vcat) for col in 1:size(a,2)
sum(@view(a[:,col]))+1000*myid()
end
4-element Array{Int64,1}:
2006
3015
4024
5033
可以看出,第一列使用第一个过程求和,第二列使用第二个过程求和,等等
根据场景,您可以考虑使用<代码> SydRayRe< /Cord>来存储数据。
最后,您还可以查看
分布式
包中的pmap
和preduce
。根据具体情况,它们可能非常适合。不是内置的。具有ThreadMapCols
和(显然不在文档中)tmapcols
。您还可以查看谁的map
,您可以将其应用于eachcol(x)