gpt4 book ai didi

parallel-processing - 有什么办法可以在 matlab 中为 spmd 命令添加一个开关?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:14 28 4
gpt4 key购买 nike

我正在使用 matlab2011 进行多核并行计算,这在我的代码中只是通过 block SPMD END 实现的。但是,有些时候,我想根据输入参数关闭程序中的spmd。我尝试了以下代码,但它不起作用

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。

最佳答案

您可以将 worker 数量作为参数传递给 spmd。如果指定的 worker 数是0

spmd(0)
statement; %# block body
end

然后 MATLAB 将在本地执行 block 主体并创建 Composite 对象,就像没有可用池一样。

示例

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

关于parallel-processing - 有什么办法可以在 matlab 中为 spmd 命令添加一个开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570004/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com