我有一个来自matlab 2010a的代码,我想在matlab 2019a中运行它,我使用的是并行性。
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版本中运行。
发布于 2020-04-20 17:02:46
代码的字面翻译是这样做的:
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)使用-当您使用parfor、spmd或parfeval时。每个batch命令都派生一个额外的工作进程,该进程无法访问并行池中的工作进程。
发布于 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仍然是默认行为,您可以使用:
j1 = batch('parallel1');https://stackoverflow.com/questions/61296508
复制相似问题