我想使用並行計算工具箱來加速一組不依賴於彼此的函數調用。爲了提高效率,我想使用定時器函數/回調函數在我的函數執行完一個函數後繼續執行更多的函數。我不知道提前哪些將會更快,所以我不能將我的功能劃分成幾個池,並將它們並行設置。使用並行工具箱創建具有有限工作量(ThreadPool)的任務/作業池
換句話說,我想要一些平行執行從一個函數池中拉出來。
我現在設置的唯一方法是使用str2fun
這個字符串的單元數組,有沒有更好的方法來做到這一點?
歡迎提問。
我想使用並行計算工具箱來加速一組不依賴於彼此的函數調用。爲了提高效率,我想使用定時器函數/回調函數在我的函數執行完一個函數後繼續執行更多的函數。我不知道提前哪些將會更快,所以我不能將我的功能劃分成幾個池,並將它們並行設置。使用並行工具箱創建具有有限工作量(ThreadPool)的任務/作業池
換句話說,我想要一些平行執行從一個函數池中拉出來。
我現在設置的唯一方法是使用str2fun
這個字符串的單元數組,有沒有更好的方法來做到這一點?
歡迎提問。
沒有必要自己來寫這樣的代碼。 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
爲什麼不這樣做簡單的東西,如:
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
這工作得很好,感謝 – 2012-01-28 15:57:13
函數處理單元陣列的工作比普通數組更好 - 避免索引之間的混淆到陣列中,並評估功能手柄。事實上,在R2011b中,你不能連接功能手柄。 – Edric 2012-01-30 07:16:12
謝謝,@Edric。調用'eval'而不是應用函數句柄是否有開銷? – 2012-01-30 07:38:46