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)