首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Matlab中等待使用spmd (并行计算)

在Matlab中等待使用spmd (并行计算)
EN

Stack Overflow用户
提问于 2015-12-18 00:55:45
回答 1查看 192关注 0票数 0

我使用spmd将两个不同的任务分配到计算机的两个处理器中。代码类似于:

代码语言:javascript
复制
spmd
    if labindex==1
       TASK_ONE;
    end
    if labindex==2
       TASK_TWO;
    end
end

每个任务打开一个文件并对其进行处理,并存储结果。当仍有文件要处理时,循环仍在继续。我的问题是,TASK_ONE需要处理的文件较少,当它完成时,代码就会停止(它退出spmd块)。因此,TASK_TWO并没有完成对其所有文件的处理。有没有办法让spmd一直运行到TASK_TWO结束,即使TASK_ONE已经结束了?

EN

回答 1

Stack Overflow用户

发布于 2015-12-18 20:28:26

在所有工作进程都完成之前,spmd块无法完成,因此,如果您看到并非所有文件都已被处理,则您的代码中一定存在其他错误。从本质上讲,每个spmd块的执行就好像它在最后调用了labBarrier一样。

您可以很容易地看到这种行为,如下所示:

代码语言:javascript
复制
spmd
    if labindex == 1
        for idx = 1:10, disp(idx), pause(1), end
    end
    if labindex == 2
        for idx = 1:3, disp(idx), pause(1), end
    end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34340137

复制
相关文章

相似问题

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