从多个CPU线程调用CUDA内核(使用共享内存)

时间:2012-10-19 15:12:38

标签: multithreading cuda cpu shared-memory reduction

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

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

当我从单个CPU线程运行它时,它可以在每个块中使用任意数量的CUDA线程(最多可达我的设备:1024)。

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

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

我试图删除我的内核行,在那里我执行了减少(所以在数组上只保留了一些操作但没有CUDA线程之间的任何通信)并且它可以在任何数量的每个块中使用任意数量的CUDA线程CPU线程。

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

PS:我使用的是单个GTX650。

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

0 个答案:

没有答案