2012-01-08 77 views
2

我想在Matlab中使用一些并行功能。 并执行以下命令。使用matlabpool批处理的问题

matlabpool open local 12; 
batch(funcname,1,{arg},'PathDependencies',p,'Matlabpool',1); 

然后所有进程的时间... 其余但是,如果没有打开matlabpool保持沉默。它会正常完成。 使用matlabpool和批处理之间是否存在任何冲突?

回答

1

matlabpool命令在本地计划程序上运行并行作业,为您提供运行parfor循环和spmd块的工作站。这意味着虽然matlabpool处于打开状态,但本地调度程序可用的工作人员数量会减少。然后,当您尝试运行batch作业时,它只能在有工人空闲时运行。

你可以找到你有你的本地调度程序或者使用“作业监视器”,从“并行”桌面菜单项有多少正在运行的作业(您matlabpool会议将有显示为状态running 12个任务的工作),或通过执行以下代码片段:

s = findResource('scheduler', 'Type', 'local'); 
[pending, queued, running, finished] = findJob(s); 
running 
1
如果你想批量和PARFOR同时

,打开一个都不能少与matlabpool工人比你,否则会。所以11你的情况。如果你先批量然后matlabpool,它会自动做到这一点,但反之亦然。

看到队列:

c=parcluster 
c.Jobs 

有趣的是,如果你打开第二个MATLAB实例,你可以得到另外12名工人。但奇怪的是没有第三个。虽然我猜测你好像实际上使用它们,但它会摔打。