2012-09-14 60 views
9

我開發了一個簡單的函數,用於使用CUDA C++水平或垂直鏡像圖像。是不是完全優化了NPP功能?

然後我才知道NVIDIA Performance Primitives Library還提供了映像鏡像功能。

只是爲了比較的緣故,我對核電站的功能進行了計時。令人驚訝的是,我的功能表現優於(雖然略微有點小,但仍然......)。

我通過使用Windows計時器以及CUDA計時器多次確認了結果。

我的問題是:是不是針對NVIDIA GPU完全優化的NPP功能

我正在使用CUDA 5.0,GeForce GTX460M(Compute 2.1)和Windows 8進行開發。

+0

以百分比表示的區別是什麼?鏡像操作將受到內存綁定的限制,新設備可靈活處理哪些類型的內存訪問模式可以高效處理。天真的實現可能接近最佳設備。也許NPP版本適用於較舊的設備。您可以從分析器獲取內核的內存帶寬統計信息,並將它們與設備的最大值進行比較。 –

+0

我測試了4種類型的圖像和2種不同的尺寸。 8位,16位,1通道,3通道,(1280 x 720),(1920 x 1080)。我獲得了16位單通道圖像(1280 x 720)的最大加速比,比NPP快了18.75%。 – sgarizvi

+1

你說得對,核電廠的表現欠佳。我已經找到了更好的庫來進行CUDA圖像處理。我個人喜歡ArrayFire的圖像處理選擇,並發現它很快,其他人報告使用OpenCV的GPU功能,雖然我沒有聽說過很棒的東西關於那個。在巴基斯坦Tunacode也有一些東西。 –

回答

9

我可能無法發佈此答案。 :)

NVIDIA不斷努力改進我們所有的CUDA庫。核電廠是一個特別大的圖書館,擁有4000多項功能。我們有一個切實可行的目標,即爲圖書館提供超過CPU等同的有用加速,這些都在我們的所有GPU和支持的操作系統上進行了測試,並得到了積極改進和維護。有問題的功能(鏡像)是我們將在未來版本中改進的已知性能問題。如果您需要優化某個特定功能,那麼將其優先化的最佳方式是使用NVIDIA CUDA registered developers可用的缺陷提交表單提交RFE錯誤(請求增強)。

順便說一句,我不認爲任何圖書館都可以「完全優化」。隨着大型圖書館在龐大而不斷增長的硬件基礎上得到支持,優化它的工作從未完成! :)

我們鼓勵人們繼續嘗試超越NVIDIA®(英偉達™)圖書館,因爲總體而言,它促進了最先進的技術並惠及計算生態系統。

+3

作爲一邊......它可能是安全的說如果有足夠的時間和精力,通常可以在原始性能方面打敗圖書館的功能。圖書館通常會做出更少的假設,以便更廣泛地應用。當你推出自己的產品時,你可以根據自己的情況使用所有的假設來加快速度。想到的一個例子(不是GPGPU,但可能適用相同的想法)正在分揀。如果您對數據有很多瞭解並且願意將這些假設融入代碼中,那麼擊敗標準的排序方法並不難。 – Patrick87