kernel1 <<< blocks1, threads1, 0, stream1 >>> ( args ... );
...
kernel2 <<< blocks2, threads2, 0, stream2 >>> ( args ... );
...
我有两个同时运行的内核,
该设备是GTX460,因此它是Fermi架构
cuda工具包和sdk是3.2 rc。
与上面的代码一样,两个内核被编码为同时运行,
但是没有来自任何内核的回复。
内核正在做什么限制?
两个内核共享一些数据
他们有一些共同之处
如果我注释掉大部分内核函数,则程序停止
请给我任何帮助。
答案 0 :(得分:2)
在不同的流上运行的事实并不意味着它们将同时运行。 如果第一个内核所需的资源量允许运行第二个内核,则情况就是如此,否则它们将以串行方式运行。 确保在两次内核调用之后有一个cudaSyncThreads(),或者在两个线程上同步。请记住,所有cuda调用都是异步的。