編譯opencv和cuda的幾個注意事項==轉載
最近要用到cuda做一些並行加速優化,由於一部分是關於影象的,所以需要用到集成了cuda的opencv庫。直接在官網下載下來的opencv有些版本是沒有把opencv編譯進去的,所以就需要我們自己重新編譯。
Windows環境下用到的工具是opencv、Cmake、vs,和一臺已經裝好顯示卡、顯示卡驅動、cuda的電腦。
1. 安裝顯示卡並測試:
插好顯示卡-安裝驅動-安裝cuda,過程簡單,網上資料很多,不具體介紹了,這裡說下注意事項。
測試顯示卡是否安裝好,有兩個指令,
(1)命令提示符裡輸入nvcc -V,如果出現版本號,如下圖1。
(2)在C:Program FilesNVIDIA CorporationNVSMI路徑下面開啟命令提示符(資料夾空白處按住shift的同時右鍵,可以開啟命令提示符),因為這個路徑沒有加到系統環境變數所以要切換過來,(建議把這個路徑也新增到環境變數,以後用起來方便),輸入nvidia-smi後回車,如果出現下面圖片2,說明顯示卡驅動和cuda都安裝成功,這時候就可以正常用了。
有一種情況是可以出現圖1,但是圖2不能出現,可能有多種原因,我遇到的情況是,由於安裝顯示卡的時候我沒有把連線顯示器的視訊線接到顯示卡的視訊介面上,也就是視訊線還在主機板的視訊介面,我猜有可能這樣顯示卡沒被啟用,所以用不了,解決方法就是視訊線接到顯示卡介面,圖2就出現了。
2. 編譯opencv。具體編譯的方法配置網上很多,這裡只說一些奇葩的問題。
(1)使用編譯好的opencv編寫新程式的時候,Debug模式下總是出現0xc000000d錯誤。Release模式下沒問題。
解決方法:看一下你的磁碟是什麼格式,如果是在FAT32格式下用Cmake和vs進行編譯的話,建議把Cmake和vs以及產生的中間檔案都放到NTFS格式的磁碟下全部重新操作,這個問題就可以解決。
(2)程式第一次執行到upload的時候(類似圖5),等待的時間很長,可能會有1、2分鐘之久,然後繼續正常向下執行。
解決方法:首先在https://developer.nvidia.com/cuda-gpus#collapse4 查詢你顯示卡對應的Compute Capability,比如我的K1200顯示卡對應的是5.0,如下圖
然後在cmake更改相應引數,如下圖
然後再重新編譯opencv和cuda。然後再使用就會發現程式的執行速度正常了。
具體的原理可以參考:http://docs.opencv.org/2.4/modules/gpu/doc/introduction.html#compilation-for-different-nvidia-platforms
http://answers.opencv.org/question/52304/long-delay-on-cvgpugpumatupload-after-upgrade-to-gtx970/