![](/img/trans.png)
[英]OpenCL code on Nvidia GEFORCE using Visual Studio 2010
[英]How to interpret NVIDIA Visual Profiler analysis/recommendations?
我是CUDA的新手,目前正在研究一個項目,該項目旨在加速具有gpu附件(NVIDIA TX1)的嵌入式系統中的計算機視覺應用程序。 我想做的是在兩個庫之間進行選擇:OpenCV和VisionWorks(包括OpenVX)。
目前,我已經編寫了運行Canny Edge Detection算法的測試代碼,並且這兩個庫顯示出不同的執行時間(VisionWorks實施節省了大約30%至40%的時間)。
因此,我想知道原因可能是什么,因此剖析了耗時最多的內核:來自OpenCV4Tegra的'canny :: edgesHysteresisLocalKernel',它占據了整個應用程序的37.2%(來自OpenCV實現和VisionWorks實現),並且VisionWorks的“ edgesHysteresisLocal”。
我遵循了“指導性分析”,分析器建議應用程序都受延遲限制,以下是VisionWorks的“ edgesHysteresisLocal”和OpenCV4Tegra的“ canny :: edgesHysteresisLocalKernel”的捕獲。
OpenCV4Tegra-canny :: edgesHysteresisLocalKernel
VisionWorks-edgeHysteresisLocal
所以,我的問題是
從分析中,我能告訴我不同表現的原因嗎?
此外,在一般情況下對CUDA應用程序進行性能分析時,從哪里開始是一個好點? 我的意思是,有很多指標,很難說出要看的內容。
一般而言,是否有一些有關分析CUDA應用程序的教育材料? (我看了許多來自NVIDIA的幻燈片,我認為它們只是在說明指標的定義,而不是一般的起點。)
-順便說一下,據我所知,NVIDIA不提供VisionWorks和OpenCV4Tegra的源代碼。 如果我錯了糾正我。
預先感謝您的回答。
1/2個庫之間的shared_memory用法不同,這可能是導致性能差異的原因。
2 /通常使用三個指標來了解我的算法是否針對CUDA設備進行了正確編碼:
3 /我認為互聯網上有很多東西。
另一件事 :
如果您只是想比較一個庫與另一個庫的使用情況以選擇最佳庫,那么為什么需要了解每個實現(這很有趣,但不是先決條件)?
為什么不根據指標(假陽性,已知結果集的平均誤差,...)用周期時間和產生的結果的質量來衡量算法性能?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.