2010-10-28 167 views
1
kernel1 <<< blocks1, threads1, 0, stream1 >>> (args ...); 
... 
kernel2 <<< blocks2, threads2, 0, stream2 >>> (args ...); 
... 

我有两个内核同时运行,
和设备是GTX460,所以它是费米架构。
cuda工具包和sdk是3.2 rc。

与上面的代码类似,两个内核编码为同时运行,
但是没有来自任何内核的响应。如何在一个GPU上使用CUDA运行多个内核?

内核在做什么有什么限制? 两个内核共享一些数据
它们有一些共同之处。
如果我注释掉大部分内核函数,那么程序暂停。

请给我任何帮助。

+0

“如果我注释掉大部分内核函数,那么程序就会暂停。”这是什么意思?更多细节将会有所帮助。 – Marm0t 2010-10-28 16:47:58

+0

你能发布更多信息吗?我努力去理解你所做的事情,你期望发生的事情以及实际发生的事情。 – Tom 2010-10-30 18:26:44

回答

2

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

+0

是的,如果我使用每块更少的线程数,程序就会运行。谢谢。 :) – superscalar 2010-11-04 02:29:31

相关问题