我不明白Matlab并行计算工具箱中的parfor cicle是如何使用内存的:我读了它,在所有工作者之间共享内存(然后我认为每个工作者(内核)都可以访问感兴趣的内存位置,而不需要创建本地副本),但其他参考告诉我,每个内核都会创建内存的本地副本(变量等)。它能工作的地方!答案是什么?Parfor有共享内存系统,不会复制数据,还是每个工作人员都有数据的本地副本?谢谢
发布于 2013-07-15 15:34:04
如果您使用的是MDCS集群,由于PARFOR可以跨多台机器运行,因此它必须能够将所需的数据复制到工作进程。碰巧的是,它还会复制数据,即使workers与您的桌面MATLAB位于同一主机上。部分原因是MATLAB无法理解何时共享数组是安全的。请注意,这适用于“广播”数据,而不是“切片”数据-当数组被“切片”时,只有相关部分被发送到每个worker。在下面的人为设计的示例中:
broadcast = rand(400);
slicedIn = rand(400);
parfor idx = 1:400
slicedOut(idx) = numel(broadcast) + sum(slicedIn(:, idx));
end然后,将所有broadcast复制到每个worker;而只复制所需的slicedIn和slicedOut片段。更多信息请点击这里:http://www.mathworks.co.uk/help/distcomp/advanced-topics.html#bq_of7_-1
https://stackoverflow.com/questions/17623930
复制相似问题