3
我想優化我的CUDA
程序,方法是將數據傳輸與內核執行重疊。但CUDA SDK中的示例程序asyncAPI.cu
太簡單了,無法提供幫助。使用CUDA流重疊數據傳輸和內核執行
我沒有搜索這個問題,發現一些教程使用兩個CUDA流實現重疊。在我的情況下,需要計算大量的數據,因此我需要循環並將每個迭代的一部分數據分派到GPU
。但我不怎麼寫這樣的循環,因爲所有的操作都是異步的,恐怕傳輸的數據會擦除/覆蓋當前正在計算的那些數據。
有沒有人經歷過這個?
任何幫助將不勝感激。
更詳細地說,例如,您可能還有一個用於輸入/輸出的單個數組,並且每個數據流都會在這些數組中接收到不同的偏移量。偏移量應根據每個流中的內核處理的元素數來計算,以便一個流中的線程不會觸及其他流使用的內存。 – harrism 2011-06-06 09:17:13
是的,我得到了。非常感謝。但是,在一個循環中何時開始下一個數據傳輸。一段代碼片段將有所幫助。 – user435657 2011-06-06 09:21:39
@harrism:聽起來很合理。另一個問題是,控制立即返回主機,並且如果在一個循環中將在前一個完成之前開始下一個數據傳輸。那麼,如何控制這種情況。要進行投票事件?或者有更好的解決方案?謝謝。 – user435657 2011-06-06 09:39:28