我想使用并行计算工具箱来加速一组不依赖于彼此的函数调用。为了提高效率,我希望在我的一个函数完成执行后,使用定时器函数/回调函数来连续执行更多函数。我不知道哪些会更快,所以我不能将我的一组功能划分为几个池并将它们并行设置。
换句话说,我想要一些并行执行来继续从功能池中拉出来。
我现在设置这个设置的唯一方法是使用str2fun
打开的字符串单元格数组,有更好的方法吗?
欢迎提出问题。
答案 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
答案 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