MATLAB: Run custom function on GPU with Parallel Computing Toolbox

gpuParallel Computing Toolbox

I have a function which needs to find min( b -A*x ). The dimensions of b = 5 X 1; A = 5 X 2; x = 2 X 10; The output of A*x would be 5 X 10. and since b is a column vector, the final output will be 5 X 10, [b – A*x] and if we apply min operator we would get 5 X 1. When I try to use the arrayfun function it gives error :- Error using parallel.gpu.GPUArray/arrayfun Matrix dimensions must agree for 'mtimes'

Best Answer

Arrayfun on the GPU only supports elementwise operations, so it is not the command that you want to use in this case.
You need to use min and * (mtimes) directly, which are overloaded to run on the GPU. If at least one of A, b, or x are stored on the GPU (i.e. of type parallel.gpu.GPUArray), then your code snippet will run on the GPU.