MATLAB Answers

0

GPU and CPU code: How to do?

Asked by Nycholas Maia on 9 Jan 2019
Latest activity Commented on by Nycholas Maia on 10 Jan 2019
I would like to share my MATLAB project with others that does not have any GPU card in your computers, but I want to use the GPU power in my computer.
How can I write ONLY ONE MATLAB code that can be run with and without GPU system?
My main GPU commands are:
  • parfor
  • GPUarray
In C/C++ language, we can write a pre-processor that can be this "magic shift". Is possible to do this in MATLAB?

  0 Comments

Sign in to comment.

2 Answers

OCDER
Answer by OCDER
on 9 Jan 2019
 Accepted Answer

Depending on how your codes are structured, try to decide early on whether to use gpuArray or regular array. Most Matlab built-in functions will automatically determine and use gpuArrays.
function Output = main(Input)
%Decide early to use gpuArray
if gpuDeviceCount > 0
Input = gpuArray(Input);
end
%Use functions that support either gpuArray or regular arrays as inputs
plot(Input)
Input = myCustonFcn(Input) %custom function that allows gpuArray inputs
%Return as a regular array when done
if existsOnGPU(Input)
Output = gather(Input);
else
Output = Input;
end

  0 Comments

Sign in to comment.


Answer by Joss Knight
on 9 Jan 2019

This is exactly why MATLAB's GPU support is so awesome! You should only need to insert your 'shim' for gpu data, as OCDER describes in their answer, in a very limited number of places. If you are doing Deep Learning, it's even easier: training and inference will automatically run on the GPU if there is one, and the CPU if not.

  1 Comment

thank you!!

Sign in to comment.