我開發了一個簡單的函數,用於使用CUDA C++水平或垂直鏡像圖像。是不是完全優化了NPP功能?
然後我才知道NVIDIA Performance Primitives Library還提供了映像鏡像功能。
只是爲了比較的緣故,我對核電站的功能進行了計時。令人驚訝的是,我的功能表現優於(雖然略微有點小,但仍然......)。
我通過使用Windows計時器以及CUDA計時器多次確認了結果。
我的問題是:是不是針對NVIDIA GPU完全優化的NPP功能?
我正在使用CUDA 5.0,GeForce GTX460M(Compute 2.1)和Windows 8進行開發。
以百分比表示的區別是什麼?鏡像操作將受到內存綁定的限制,新設備可靈活處理哪些類型的內存訪問模式可以高效處理。天真的實現可能接近最佳設備。也許NPP版本適用於較舊的設備。您可以從分析器獲取內核的內存帶寬統計信息,並將它們與設備的最大值進行比較。 –
我測試了4種類型的圖像和2種不同的尺寸。 8位,16位,1通道,3通道,(1280 x 720),(1920 x 1080)。我獲得了16位單通道圖像(1280 x 720)的最大加速比,比NPP快了18.75%。 – sgarizvi
你說得對,核電廠的表現欠佳。我已經找到了更好的庫來進行CUDA圖像處理。我個人喜歡ArrayFire的圖像處理選擇,並發現它很快,其他人報告使用OpenCV的GPU功能,雖然我沒有聽說過很棒的東西關於那個。在巴基斯坦Tunacode也有一些東西。 –