首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中将matlabpool转换为parpool

在matlab中将matlabpool转换为parpool
EN

Stack Overflow用户
提问于 2020-04-19 05:31:27
回答 2查看 160关注 0票数 1

我有一个来自matlab 2010a的代码,我想在matlab 2019a中运行它,我使用的是并行性。

代码语言:javascript
复制
matlabpool open 4 %prepares matlab to run in 4 parallel procesors
j1 = batch('parallel1', 'matlabpool', 0);
pause(1)
j2 = batch('parallel2', 'matlabpool', 0);
pause(1)
j3 = batch('parallel3', 'matlabpool', 0);
pause(1)
j4 = batch('parallel4', 'matlabpool', 0);

matlabpool close

但是,代码不能在这个版本的matlab中运行,因为我必须使用parpool。所以,我请教一些人,他们知道如何转换或如何更改这部分代码,以便在我的新matlab版本中运行。

EN

回答 2

Stack Overflow用户

发布于 2020-04-20 17:02:46

代码的字面翻译是这样做的:

代码语言:javascript
复制
parpool(4) % Creates a parallel pool with 4 workers
j1 = batch('parallel1', 'Pool', 0) % creates a batch job with no pool
... % etc.

然而,我很好奇这是否真的是您想要做的。MATLAB命令启动4个工作进程供您的桌面parpool(4)使用-当您使用parforspmdparfeval时。每个batch命令都派生一个额外的工作进程,该进程无法访问并行池中的工作进程。

票数 2
EN

Stack Overflow用户

发布于 2020-04-19 17:31:37

第一步是检查原始文档,因为2010a不再是在线here the corresponding 2013a documentation。它仍然有matlabpool的解释:

'Matlabpool‘-一个整数,指定除了运行批处理作业本身的工作进程之外,还要加入作业的MATLAB池的工作进程数。脚本或函数使用此池执行批处理代码中的parfor和spmd等语句。因为MATLAB池除了运行批处理的工作进程之外还需要N个工作进程,所以集群上必须至少有N+1工作进程可用。您不必有一个已经运行的MATLAB池来执行批处理;并且批处理打开的新池与您可能已经打开的某个MATLAB池无关。(请参阅运行批处理并行循环。)默认值为0,这会导致脚本或函数仅在没有MATLAB池的单个工作线程上运行。

在当前的MATLAB版本中,这个选项是replaced by the pool parameter。0仍然是默认行为,您可以使用:

代码语言:javascript
复制
j1 = batch('parallel1');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61296508

复制
相关文章

相似问题

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