Inconsistent results when using a Cuda Kernel in Matlab

2 views (last 30 days)
I have recently come across a problem when using a Cuda kernel: The results I get from the kernel are not always the same even though the input data is always the same.
Note the difference in the third row second column.
This is the Matlab code from the function:
And the Kernel:
Does Matlab perhaps not work well cuDoubleComplex when used inside the kernel?
I also tried to use wait(gpuDevice(1)) after I gathered the data. I thought that perhaps the gpu was not done with the calculation. It did not work.
Can somebody help me?

Accepted Answer

Joss Knight
Joss Knight on 8 Mar 2021
You are overwriting the contents of wReal and wImag inside your kernel, but every thread with the same x grid position is reading the same element of that array. Some threads will see the original value and some the updated value and it'll be pretty much random which is which. Remove lines 68 and 69 and your problem will probably go away, although you may also need to update lines 82 and 88 to use w.x and w.y instead.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!