如何使用CUDA在一个GPU上运行多个内核?

时间:2010-10-28 11:33:57

标签: cuda

kernel1 <<< blocks1, threads1, 0, stream1 >>> ( args ... );
...
kernel2 <<< blocks2, threads2, 0, stream2 >>> ( args ... );
...

我有两个同时运行的内核,
该设备是GTX460,因此它是Fermi架构 cuda工具包和sdk是3.2 rc。

与上面的代码一样,两个内核被编码为同时运行,
但是没有来自任何内核的回复。

内核正在做什么限制? 两个内核共享一些数据 他们有一些共同之处 如果我注释掉大部分内核函数,则程序停止
请给我任何帮助。

1 个答案:

答案 0 :(得分:2)

在不同的流上运行的事实并不意味着它们将同时运行。 如果第一个内核所需的资源量允许运行第二个内核,则情况就是如此,否则它们将以串行方式运行。 确保在两次内核调用之后有一个cudaSyncThreads(),或者在两个线程上同步。请记住,所有cuda调用都是异步的。