2010-10-28 125 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

相關問題