使用并行工具箱创建具有有限数量的工作人员(ThreadPool)的任务/作业池

时间:2012-01-28 02:00:40

标签: parallel-processing matlab

我想使用并行计算工具箱来加速一组不依赖于彼此的函数调用。为了提高效率,我希望在我的一个函数完成执行后,使用定时器函数/回调函数来连续执行更多函数。我不知道哪些会更快,所以我不能将我的一组功能划分为几个池并将它们并行设置。

换句话说,我想要一些并行执行来继续从功能池中拉出来。

我现在设置这个设置的唯一方法是使用str2fun打开的字符串单元格数组,有更好的方法吗?

欢迎提出问题。

2 个答案:

答案 0 :(得分:5)

没有必要自己编写这样的代码。 Matlab并行工具箱可以创建scheduler with multiple jobs。 您可以多次调用createJob,调度程序将执行拉动。

 foos = [@foo1,@foo2,@foo3,@foo4]
 for i=1:numel(foos)
     obj = createJob();
     createTask(obj, foos(i), 1, {'your input'});
     submit(obj);
 end

enter image description here

答案 1 :(得分:0)

为什么不做一些更简单的事情:

matlabpool 3

parfor t=1:3
  if t==1
    a1=f1();
  end
  if t==2
    a2=f2();
  end
  if t==3
    a3=f3();
  end
end