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!