Inconsistent results when using a Cuda Kernel in Matlab
조회 수: 3 (최근 30일)
이전 댓글 표시
Hello,
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?
댓글 수: 0
채택된 답변
Joss Knight
2021년 3월 8일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 GPU Computing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!