我希望我的CPU和GPU重疊計算,但是,我的GPU代碼包含一些同步函數調用,如cudaBindTextureToArray()
和cudaUnbindTexture()
,沒有異步對象存在。這些調用會調用GPU-CPU併發性嗎?cudaBindTextureToArray和cudaUnbindTexture是否打破了GPU-CPU的併發性?
2
A
回答
3
一般而言,可以是異步的功能列舉here:
- •Kernel launches;
- •Memory copies between two addresses to the same device memory;
- •Memory copies from host to device of a memory block of 64 KB or less;
- •Memory copies performed by functions that are suffixed with Async;
- •Memory set function calls.
異步函數通常具有後綴Async
,他們通常會接受一個stream
參數。
不符合上述說明的函數應假定爲同步的。具體的例外情況(如cudaSetDevice()
)通常可以從他們的描述中看出來。
在單設備系統的上下文中,同步功能(具有特定流同步的功能,如cudaStreamSynchronize
和cudaStreamWaitEvent
除外)將:
- 等待開始直到所有CUDA活動已經完成(即所有先前的cuda API調用和內核調用已完成)
- 執行其指定的活動(例如
cudaMemcpy()
將在步驟1完成後開始指定的複製操作) - 發佈第2步後調用(主機)線程完成
因此調用(主機)線程從cudaMemcpy()
調用時,直到所有以前的CUDA活動的時刻阻止完成和的cudaMemcpy()
通話完成。我認爲大多數人會說這可能會「破壞」GPU-CPU併發性,因爲在上述序列的持續時間(步驟1-3)中,CPU線程實際上什麼都不做。
在你的應用程序中是否有很大的區別取決於有問題的同步調用之前和之後發生了什麼。
相關問題
- 1. Honeycomb SDK是否打破了GridView的向後兼容性?
- 2. 制定者和獲得者是否真的打破了SRP?
- 3. history.replaceState是否打破了XUL應用程序和插件?
- 4. PyCuda中的cudaBindTextureToArray
- 5. 的typeof()打破了
- 6. MVC是否打破封裝?
- 7. Oracle的EXTRACT函數是否打破了XMLELEMENT中的NOENTITYESCAPING?
- 8. ExceptionHub是否打破了Selenium的wait_for_page_to_load命令
- 9. 票務系統是否打破了我的REST範式?
- 10. 了xgettext的Python合併gettext和ngettext串,打破轉變查找
- 11. 打破了循環
- 12. 打破了熱圖
- 13. 了SimplePie打破(XAMPP)
- 14. 在打破REST的POST/PUT請求中是否將屬性作爲JSON發送?
- 15. 流行的「揮發性投票國旗」模式是否被打破?
- 16. mvc和partials是不是打破了mvc模式?
- 17. 是否在rc6中打破了jQuery UI選項卡?
- 18. 依賴注入是否打破了Demeter法
- 19. R平行擴展是否打破了「應用」隱喻?
- 20. &&是打破了網頁在WordPress
- 21. 打破了jQuery的功能
- 22. AnkhSVN的打破了SVN 1.7
- 23. 我打破了我的代碼,不知道發生了什麼
- 24. 使用.First()和.Count()打破了IEnumerable?
- 25. PHP關閉是打破了還是我錯過了什麼?
- 26. jquery屬性.css(propertyName)是不是打破了關注點分離的規則?
- 27. 在LINQ中打破鏈接Select()是否會損害性能?
- 28. 自制軟件更新了zlib並打破了一切
- 29. HttpUrlConnection是否存在併發性問題?
- 30. Xamarin Studio 4.0.13,Subversion和Mavericks是這個組合打破了
cuda程序指南中的哪個地方可以找到關於此的參考? – Luc 2013-04-23 12:19:10