GPUCoder does not generate parallelized code
1 次查看(过去 30 天)
显示 更早的评论
I am currently working on optimizing a program that otherwise runs on the CPU. For this, I am using the GPU coder to run my CPU code on the GPU. However, this does not provide a significant speedup.
Now I tried to build a function as simple as possible with the GPU coder.
function [out] = simple_function(vector)
out = sqrt(sqrt(sqrt(vector))));
end
I then call this function with very large input vectors, which definitely requires computation. However, when I analyze this function with gpucoder.profile(...) and then display the result of the profiling in the NVIDIA Visual Profiler, it indicates that the code is not well optimized. In particular, it shows that 0% of the time parallelized computations are being performed.
Even though this is a very easy function to parallelize. Is there any way to set the GPU coder to parallelize more?
Thanks
0 个评论
回答(1 个)
Joss Knight
2022-4-29
This looks about right to me, because your kernel is too simple and you're transferring data from and to the CPU on every call. Try recompiling with gpuArray input and output (if you have PCT) to remove the data transfer bit, or else write some code that will require the GPU to launch multiple kernels. Do some reductions perhaps?
sz = size(x);
for i = 1:100
y = sum(sqrt(sqrt(sqrt(abs(x)))),"all");
x = y*randn(sz,"like",x);
end
2 个评论
Joss Knight
2022-5-1
Thank goodness there's no kernel concurrency! Each operation is dependent on the outcome of the last. Write some code that doesn't such dependencies and you'll see more concurrency.
If I were you, I'd just profile some real code rather than testing with toy examples. Ultimately this code is too simple to trouble the GPU very much so no doubt you're still bounded by your memory transfer operations.
I'm afraid I can't help you with your question about the profiler.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with GPU Coder 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!