p = gcp();
for i = 1 : iter
f(i) = parfeval(p, @myFunc, ...);
end
for i = 1 : iter
fetchNext(f);
end
而GPU則只需將陣列使用gpuArray宣告即可。但因為要使用多GPU,因此先使用
nGPU = gpuDeviceCount;
得到GPU的個數,然後呼叫數學函數前記得先用gpuDevice()選擇要用哪張GPU
gpuDevice(GPU_index) % 1 <= GPU_index <= nGPU
math_func(...)
...
搭配前面的CPU multi-thread即可同時使用多張GPU運算。
注意事項:
使用Multi-thread CPU + Multi-GPU時,記得[1]要自己安排讓#(nGPU)個函式用CPU+GPU執行,[2]剩下#(nCPU-nGPU)個只使用CPU單獨。[1]可避免太容易出現GPU out of memory,[2]可增加效能。
沒有留言:
張貼留言