首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何并行运行MATLAB脚本多次

如何并行运行MATLAB脚本多次
EN

Stack Overflow用户
提问于 2016-08-31 09:32:28
回答 2查看 960关注 0票数 0

我有一个matlab脚本(称为MyProcessing.m),它根据一些随机数进行一些计算。现在我有一个固定的种子来得到相同的随机数序列。我想并行运行这个脚本多次,以利用我在系统上可用的多个核心。我希望每一个新的“过程”开始于一个不同的(但暂时固定)种子。Bellow是处理文件,就像现在一样。

脚本中有一个for循环,但我不能使用parfor,因为每次迭代都依赖于前面的迭代。

MyProcessing.m

代码语言:javascript
复制
rng(1);
A = rand(5,5);
x =[];
y = []

% for loop
%   that updates x and y when necessary
% end for

figure(1);
scatter(x, y);
savefig(filename);

我可以访问MATLAB中的并行计算工具箱,但我想不出我应该做什么。我认为我必须编写另一个脚本来调用带有不同随机种子的处理脚本,但我也希望并行运行不同的进程,这样我就可以运行许多实验。

编辑:

我想要像这样的

代码语言:javascript
复制
for i = 1:numberOfParallelProcesses
  startANewRunOfTheScript();
end

其中for循环启动进程,然后它不等待,但它继续启动下一个进程。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-31 11:36:03

您可以使用batch来实现这一点。你可以:

代码语言:javascript
复制
for idx = 1:n
  job(idx) = batch('MyProcessing');
end

然后,您可以在以后使用每个元素的load方法获取结果。

代码语言:javascript
复制
for idx = 1:n
  wait(job(idx)); % wait for results to arrive
  out{idx} = load(job(idx));
end

还有关于批处理在医生里的更多信息。

票数 2
EN

Stack Overflow用户

发布于 2016-08-31 11:10:39

对于matlab中的令人尴尬的平行问题,到目前为止最简单的解决方案是启动matlab的多个实例并在每个实例上运行脚本(显然,在开始每个实例时会对随机种子转发脚本)。过去,我在40台核心服务器上使用了这个简单的技术,效果很好。唯一的限制是你的系统内存。使用少量的尝试和错误来查找获得最大吞吐量所需的实例数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39245847

复制
相关文章

相似问题

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