GPU and CPU code: How to do?
75 views (last 30 days)
Show older comments
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
Accepted Answer
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
0 Comments
More Answers (1)
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
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 ?
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!