從理論上講,我們應該得到的性能增益,當我們使用CUDA,我實現高斯 - 塞德爾方法,並與流所需出奇時間比沒有streams.Does更大的人有例子,其中我可以看到性能增益流(除樣品給出的實例在同一時間作爲內核處理將被執行SDK的目錄不是如此有用)我們真的可以通過CUDA流獲得性能提升嗎?
2
A
回答
2
CUDA流使PCI Express的傳輸。由於Amdahl定律,只有進行數據傳輸和處理內核等量的工作負載將受益於CUDA流。要確定你的工作量是否將受益,配置文件或添加一些計時代碼到你的應用程序,看看理論最大性能優勢是什麼。
注意的是,爲了得到CUDA流的性能改進,你要「軟件管道」的下載,內核啓動,並上傳。這樣做:
foreach stream {
cudaMemcpyAsync(device[stream], host[stream], ... stream);
}
foreach stream {
LaunchKernel<<<...stream>>>(...);
// you can launch multiple kernels in stream, if desired.
}
foreach stream {
cudaMemcpyAsync(host[stream], device[stream], ... stream);
}
不是這個:
foreach stream {
cudaMemcpyAsync(device[stream], host[stream], ... stream);
LaunchKernel<<<...stream>>>(...);
cudaMemcpyAsync(host[stream], device[stream], ... stream);
}
1
是,在問題中,計算時間是顯著和所有的數據是不是相互依存。然後,您可以將昂貴的計算時間隱藏在昂貴的內存傳輸中。
注意,CUDA可同時進行內存複製和內核執行,所以當一個流是做內存拷貝其他的都可以做計算。
相關問題
- 1. 通過對此表進行規範化,我可以獲得性能提升嗎?
- 2. 通過轉向Apache的lighttpd,我可以獲得怎樣的性能提升?
- 3. 我們可以通過solr配置文件提升字段嗎?
- 4. 我可以通過靜態變量獲得最佳性能嗎?
- 5. 我的程序通過EmptyWorkingSet函數獲得性能提升?危險嗎?
- 6. 我可以期望從刪除此JOIN中獲得性能提升嗎?
- 7. CUDA,可以使用共享內存提高我的性能嗎?
- 8. 我們可以通過使用PReLU使用BatchNorm來提高性能嗎?
- 9. 可以通過#define在編譯時獲得CUDA計算功能(版本)嗎?
- 10. 我們可以從netstat命令中獲得流逝時間嗎
- 11. 我們可以用Xamarin.Forms爲UWP獲得流體設計嗎?
- 12. 我可以從數據庫分頁中獲得什麼性能提升?
- 13. 我們可以測試CUDA或OpenCL與CPU性能的對比速度嗎?
- 14. 我們可以真的得到ACTUAL日期嗎?
- 15. CUDA流的性能
- 16. 我們可以通過Facebook Graph API中的付款ID獲得訂閱ID嗎?
- 17. 我們可以導出通過靜態庫提供的功能嗎
- 18. 我們可以通過CDN提供HEIF圖像嗎?
- 19. 我們可以通過它的順序獲取Groovy類的聲明屬性嗎?
- 20. 通過DNS緩存提升性能?
- 21. 通過併發提高仿真性能
- 22. 我們可以通過編程方式在j2me中獲得電話號碼嗎?
- 23. 我們可以通過CursorManager在Flex 4中獲得動態遊標嗎?
- 24. 可能通過Foursquare獲得我附近的城市嗎?
- 25. 我們可以通過ChromeDriver Selenium捕獲GET響應嗎?
- 26. 我們可以通過js
- 27. 我可以通過libjson的名字獲得對象嗎?
- 28. 我可以通過JQuery獲得div的座標嗎?
- 29. 我可以通過Reflection獲得私人房產的價值嗎?
- 30. 我可以通過Xquery獲得所需的輸出嗎?