2010-06-22 133 views
1

我已經編寫了一個CUDA代碼來解決NP-Complete問題,但性能並不像我懷疑的那樣。Cuda優化技術

我知道「一些」優化技術(使用共享memroy,紋理了zerocopy ...)

什麼是最重要的優化技術,CUDA程序員應該知道的嗎?

回答

5

你應該閱讀NVIDIA的CUDA編程最佳實踐指南:http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/NVIDIA_CUDA_BestPracticesGuide.pdf

這與相關的「優先級」多種不同性能的技巧。下面是一些重中之重提示:

  1. 使用設備的有效帶寬弄清什麼對性能的上限應該是你的內核
  2. 儘量減少主機和設備之間的數據傳輸 - 即使這指的是不高效的有
  3. 合併所有的存儲器訪問
  4. 寧可全局存儲器存取共享存儲器訪問
  5. 避免代碼執行單經,因爲這內分支序列化的螺紋裝置上做計算
+2

6.避免銀行衝突。 PS 以我應用,我發現,靜態分配的共享內存的使用速度更快,比動態分配的存儲器的使用(與內核<<<塊,線程,sharedMemSize >>>()) 所有這在最佳實踐指南中進行了介紹。 – LonliLokli 2010-06-22 09:38:31

2

新的NVIDIA Visual Profiler(v4.1)支持自動化性能分析,以確定應用程序中的性能改進機會。它還直接鏈接到「最佳實踐指南」最有用的部分,以解決其檢測到的問題。 Visual Profiler作爲NVIDIA開發人員網站上的CUDA工具包的一部分免費提供:http://www.nvidia.com/getcuda