GPU and CPU code: How to do?

51 views (last 30 days)
Nycholas Maia
Nycholas Maia on 9 Jan 2019
Edited: Biraj Khanal on 3 Jan 2022
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?

Accepted Answer

OCDER
OCDER on 9 Jan 2019
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

More Answers (1)

Joss Knight
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.
  4 Comments
Biraj Khanal
Biraj Khanal on 3 Jan 2022
Edited: Biraj Khanal on 3 Jan 2022
I am trying to compare the performance of a particular function using GPU and CPU.
Can we force any function to use CPU instead of GPU or does it only work with the segmentation function ?

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by