我正在嘗試使用CUDA支持構建opencv以將cuda::SURF_CUDA
與cv::xfeatures2d::SURF
,but it's challenging進行比較。cuda :: SURF_cuda比cv :: xfeatures2d :: SURF更快嗎?
但是,假設我想獲得高性能實時應用程序的SURF描述符。是的,我知道FAST或ORB是更合適的描述符,但它們是二進制文件,我需要歐幾里得描述符。
無論如何,重點是我想知道這兩個實現中的哪一個更快,只要給出一個(查詢)圖像就可以得到更快的。我認爲這很重要,因爲有人告訴我CUDA只有在需要處理大量圖像時才合理使用,因爲與計算描述符的時間相比,在GPU內存中加載它們的時間變得很小,但是我沒有知道這是否屬實。
另一個原因,因爲我發佈這是因爲我只有一個NVIDIA GT755m,它不是一個高級的GPU,所以我的結果可能不太好,因爲這個原因。另一方面,我試圖改進cv::xfeatures2d::SURF
的並行部分(並在64核Xeon Phi上測試它)。
它是,當然你總是依賴於硬件。你有沒有試過尋找你的GT 755m的規格,並與你的CPU進行比較?它應該給你一個提示。但無論如何,我不相信CPU版本會受益於您擁有的64個內核。 – NAmorim
@NAmorim感謝您的評論。我不是CUDA專家(實際上我幾乎一無所知),但是當我們談論GPU應用程序時,我們不應該考慮在我們的數據(圖像查詢)中加載開銷(我們無法擺脫) GPU內存(或類似的東西)?然後,當我們談論將內容加載/保存到另一個內存(特別是從/到HD)時,這將非常昂貴。我錯過了什麼嗎? – justHelloWorld
因爲我不是專家,所以我不是最好的人來討論這個問題。但是你是對的,將數據從一個地方傳輸到另一個地方的確有開銷。但是從我玩CPU/GPU並行的經驗來看,在CPU上你有更低的開銷,但也有軟並行(想象最多4個核心),GPU上的開銷更高但攻擊性並行(我相信你的情況下有300+核心) – NAmorim