首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB PARFOR:内存管理:共享内存还是不共享内存?

MATLAB PARFOR:内存管理:共享内存还是不共享内存?
EN

Stack Overflow用户
提问于 2013-07-13 04:59:12
回答 1查看 2.3K关注 0票数 3

我不明白Matlab并行计算工具箱中的parfor cicle是如何使用内存的:我读了它,在所有工作者之间共享内存(然后我认为每个工作者(内核)都可以访问感兴趣的内存位置,而不需要创建本地副本),但其他参考告诉我,每个内核都会创建内存的本地副本(变量等)。它能工作的地方!答案是什么?Parfor有共享内存系统,不会复制数据,还是每个工作人员都有数据的本地副本?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-15 15:34:04

如果您使用的是MDCS集群,由于PARFOR可以跨多台机器运行,因此它必须能够将所需的数据复制到工作进程。碰巧的是,它还会复制数据,即使workers与您的桌面MATLAB位于同一主机上。部分原因是MATLAB无法理解何时共享数组是安全的。请注意,这适用于“广播”数据,而不是“切片”数据-当数组被“切片”时,只有相关部分被发送到每个worker。在下面的人为设计的示例中:

代码语言:javascript
复制
broadcast = rand(400);
slicedIn  = rand(400);
parfor idx = 1:400
    slicedOut(idx) = numel(broadcast) + sum(slicedIn(:, idx));
end

然后,将所有broadcast复制到每个worker;而只复制所需的slicedInslicedOut片段。更多信息请点击这里:http://www.mathworks.co.uk/help/distcomp/advanced-topics.html#bq_of7_-1

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17623930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档