最近因為目標跟蹤實驗需要得安裝MatConvNet,由於已經是2019年了大家的軟件版本肯定不可能是像官網要求的那樣,所以安裝自然而然就會碰到很多問題。在這一過程中我參考了網上很多博主的經驗,有些確實幫到了我,但有些真的就是把我引到了更大的坑里(說的就是那個“翻譯成人話”、全篇飄着綠色字體的帖子)
這一過程實在是痛苦且漫長,今天終於靠自己看代碼把問題都解決了,於是想記錄一下,幫助后來的同學們。
幾個重要的點:
1. 安裝MatConvNet必須使用MSVC,MingW不行的。
2. 安裝因為需要使用mex,所以必須使用比MATLAB版本低的Visual Studio。我一開始用的2019,后來實在沒辦法,卸了換2015
3. CUDA版本如果不是MATLAB官方支持的對應版本的話,不必卸了重裝,因為Visual Stuidio說到底只是個IDE,卸了重裝代價不大,CUDA卸了重裝意味着所有依賴它的東西都得重裝了,比如torch這些的。
4. 網上那些帖子,不知道博主怎么想的,非要在MATLAB命令行中輸那么長的指令,實際上完全就可以改代碼里的默認參數啊!!!!這樣直接輸vl_compilenn就行了,試錯起來方便很多。
建議您繼續往下閱讀前試試這行命令,如果還不行再繼續看:
vl_compilenn('enableImreadJpeg', true, 'enableGpu', true, 'cudaRoot', '你的CUDA目錄','cudaMethod', 'nvcc', 'enableCudnn', true, 'cudnnRoot','如果你照着nvidia官網復制好了文件,這邊可以也填CUDA根目錄(別填local那個)','Debug','true')
好,下面開始說碰到的錯誤。
1. mex配置錯誤
這個不多說,換老版本Visual Studio后重啟就行。Visual Studio版本建議比MATLAB低一年,比如MATLAB2016的話就換成Visual Studio 2015,安裝默認的組件就行(但必須得有Windows SDK)。
2. 提示nvcc fatal : '-DNDEBUG': expected a number
打開Debug模式就行。具體操作,改vl_compilenn第179行為“opts.debug = true;”
3. 提示nvcc fatal : Unsupported gpu architecture 'compute_20'
這個憨批錯誤搞了我一天,網上那些帖子基本沒靠譜的,有一個說直接改cudaArch的其實是挺靠譜的了,但他改錯了位置。
要解決這個錯誤,首先MATLAB命令行運行gpuDecive
然后你會看到輸出有一行告訴你算力的,我的是“5.2”,那么我就需要這么一行神奇的代碼
'-gencode=arch=compute_52,code=\"sm_52,compute_52\" '
如果你是6.0就把上面的52改成60
然后!!!改默認參數!!!!最關鍵的一步!!!!
vl_compilenn第182行改成opts.cudaArch = ['-gencode=arch=compute_52,code=\"sm_52,compute_52\" '] ;
然后這一行下面也把這個神奇代碼加進去!!!!
當然,運行的時候就不能再輸這個參數了,要不然你設置的參數就會被覆蓋掉。
4. 其他問題
直接復制,上百度搜都有。記得經常重啟。
祝你們安裝成功。祝大家早日擺脫matlab。
