2

我编写了一个 cuda 内核,它使用共享内存来执行归约,以便找到数组中的最小值。这与可以在此处找到的众所周知的示例非常相似:

https://www.sharcnet.ca/help/index.php/CUDA_tips_and_tricks#Reduction

当我从单个 CPU 线程运行它时,它适用于每个块的任意数量的 CUDA 线程(最多我的设备的最大值:1024)。

当我从一些 (20) 个 CPU 线程运行它时,每个块 (256) 的 CUDA 线程数量足够少,它工作正常。

但是,一旦我用多个 CPU 线程增加 CUDA 线程的数量,一切都会崩溃!

我试图删除我执行归约的内核行(因此仅在数组上保留一些操作,但在 CUDA 线程之间没有任何通信),并且它适用于任何数量的 CPU 线程中每个块的任何数量的 CUDA 线程.

关于我的问题来自哪里的任何想法?任何想法如何解决它?在此先感谢您的帮助!

PS:我使用的是单个 GTX650。

PS2:对不起,如果我的英语水平有点差,那不是我的母语....

4

0 回答 0