首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在matlab中为spmd命令添加一个开关?

有没有办法在matlab中为spmd命令添加一个开关?
EN

Stack Overflow用户
提问于 2012-07-20 06:02:52
回答 1查看 388关注 0票数 3

我使用matlab2011进行具有多个内核的并行计算,在我的代码中,这只是使用块SPMD端实现的。但是,在某些情况下,我希望根据输入参数关闭程序中的spmd。我尝试了以下代码,但它不起作用

代码语言:javascript
复制
if (switchSpmdOn)
  spmd
end
% here I put my code for calculation in parallel or series
if (switchSpmdOn)
  end % this end is used to close the spmd block
end

我想知道在代码中是否有像marco这样的东西来关闭spmd。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-20 07:05:35

您可以将工作进程的数量作为参数传递给spmd。如果指定的工作进程数为0,即,

代码语言:javascript
复制
spmd(0)
   statement; %# block body
end

然后,MATLAB将在本地执行块体并创建复合对象,就像没有可用的池一样。

示例

代码语言:javascript
复制
switchSpmdOn = true;

%# set the number of workers
if (switchSpmdOn)
    workers = 3; 
    matlabpool(workers);
else
    workers = 0;
end

%# application. if 'workers' is 0, MATLAB will execute this code locally
spmd (workers)
    %# build magic squares in parallel
    q = magic(labindex + 2);
end

for ii=1:length(q)
  % plot each magic square
  figure, imagesc(q{ii});
end

if (switchSpmdOn)
    matlabpool close
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11570004

复制
相关文章

相似问题

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