2016-05-27 31 views
1

我在多個GPU上運行相同的CUDA內核,並打算同時使用流。需要在啓動具有唯一流ID的內核之前調用cudaSetDevice?如果沒有,很好,但如果是這樣,我想我需要以某種方式全球同步電話cudaSetDevice在使用流啓動內核之前是否需要調用cudaSetDevice?

請注意,我正在通過同步調用cudaSetDevice來創建流,以確保流與特定的GPU相關聯。

回答

2

是的。您創建的cudaStream特定於創建流時生效的設備。

documentation

如果發放給沒有關聯到當前設備流內核啓動會失敗......

+0

+1,但哎喲 - 不那種失敗(一些)流的實用性,因爲你必須同步cudaSetDevice和mykernel >>從啓動線程中>>>> – Andy

+1

你不能在啓動內核之前執行'cudaSetDevice'嗎?我看不出有什麼問題。我以前沒有聽到過這種反對意見。 –

+0

是和否 - 如果一切都從同一個線程啓動 - 沒有問題。如果有多個線程正在啓​​動,那麼您有以下風險:(thread1)cudaSetDevice(1) - >安排到thread2-> cudaSetDevice(2) - >安排回thread1-> mykernel <<<> >>如果set-launch塊不是同步。 – Andy

相關問題