我想在Matlab中使用一些并行功能。 并执行以下命令。
matlabpool open local 12;
batch(funcname,1,{arg},'PathDependencies',p,'Matlabpool',1);
然后所有进程在剩下的时间内保持沉默...... 但是没有打开matlabpool。它会正常完成。 使用matlabpool和批处理之间是否有任何冲突?
答案 0 :(得分:1)
matlabpool
命令在本地调度程序上运行并行作业,为您提供运行parfor
循环和spmd
块主体的工作人员。这意味着当matlabpool
打开时,本地调度程序可用的工作程序数量会减少。然后,当您尝试运行batch
作业时,它只能在有工作人员空闲时运行。
您可以使用“并行”桌面菜单项中的“作业监视器”查看本地计划程序上有多少正在运行的作业(您的matlabpool
会话将显示为状态{ {1}}有12个任务),或执行以下代码:
running
答案 1 :(得分:1)
如果你想同时批量和parfor,用matlabpool打开一个比你更少的工人。在你的情况下11。如果你先批量然后再批量matlabpool,它会自动执行此操作,但反之则不然。
查看队列:
c=parcluster
c.Jobs
有趣的是,如果你打开第二个matlab实例,你可以得到另外12个工人。但奇怪的是没有第三个。虽然我觉得好像你真的使用它们所有它会捶打。