如何解决使用 SharedArray 的并行 for 循环
我希望对 SharedArray 的每一列进行操作的时间和内存效率最高的负载平衡应用程序,以生成相应的列,这些列正在就地修改预分配的输出 SharedArray。我应该如何改进以下代码?
using SharedArrays,distributed
nCores = length(Sys.cpu_info())
addprocs(nCores - 1);
@everywhere using SharedArrays,distributed
@everywhere addConstant = 10000;
@everywhere function divideColByMeanConstant(x)
return (x ./ mean(x)) .+ addConstant
end
inputMAT = SharedArray(rand(10000,20000))
outputMAT = SharedArray(Array{Float64,2}(undef,size(inputMAT)))
function Array2ArrayColumnwise_forloop!(output::SharedArray{Float64,2},operation::Function,input::SharedArray{Float64,rowRange::Array{Int64,1},colRange::Array{Int64,1})
@async @distributed for colInd in colRange
@views output[rowRange,colInd] = operation(input[rowRange,colInd])
end
end
rowRange = [1,4,6,8,10,15];
colRange = [1,5,7,15];
Array2ArrayColumnwise_forloop!(outputMAT,divideColByMeanConstant,inputMAT,rowRange,colRange)
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。