【问题标题】:MATLAB PARFOR: memory management: shared memory or not?MATLAB PARFOR:内存管理:共享内存与否?
【发布时间】:2013-07-11 12:40:51
【问题描述】:

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

【问题讨论】:

    标签: matlab memory-management parallel-processing shared-memory parfor


    【解决方案1】:

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

    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

    【讨论】:

    • 好吧!但是,如果它也在同一台机器上(然后在同一内存中)复制数据,为什么它被定义为“共享内存”?它什么时候真正共享?
    • 在哪里声明数据放在共享内存中?
    猜你喜欢
    • 2014-10-08
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2015-06-01
    • 2021-12-04
    • 2016-06-22
    • 2021-05-26
    相关资源
    最近更新 更多