折騰了幾天,終於在windows系統上成功配置了Caffe環境,期間遇到了很多問題,每個問題的解決也都花了不少時間,查過挺多資料,感覺挺有意義,這里寫篇博客記錄一下。
原來我使用的CUDA版本是7.5,參照win7環境下CUDA7.5的安裝、配置與測試(VS2010) 辛辛苦苦編譯生成了caffe.exe,愣高興了一晚,結果當我用caffe對手寫字體庫mnist進行訓練時,悲劇了!運行時出現
CUDA driver version is insufficient for CUDA runtime version.
意思就是你的顯卡驅動版本與CUDA的版本不匹配,直接一點就是你的顯卡太辣雞了!不適合這么高版本的CUDA。
我一看,完了,太沖動了,辛辛苦苦編譯完caffe.exe,還沒能用上,就出現致命的問題!第一時間就是想着怎么補救,將問題拋給百度,順道爬牆去了google,給的答案基本都是將顯卡驅動升級至最高版本或者是卸載CUDA7.5,或一個與你的顯卡驅動能匹配的CUDA版本。我自己的電腦,我是知道的,用着學校實驗室批發回來的電腦,顯卡肯定是不行的,而且驅動已經是最新版本。想到這,我又開始懷疑,可能我電腦的顯卡根本就不支持CUDA。越想越着急,我下定決心要把這件事弄清楚!下面正式開始!
一、VS2013的安裝
現在visual Studio已經免費了,微軟真的是體恤中國的科研人士,致敬!安裝在這里就不多提了,官網上下載就好,還有中文版的-。-
二、Opencv2.4.10的安裝
開源計算機視覺庫,現在已經更新到3.0了,我比較傳統,還在使用2.4.10,下載和安裝也不多提了-。-
三、CUDA的安裝
檢查顯卡
首先最重要的一點是,你得確認你的顯卡是否支持CUDA。CUDA是NVIDIA廠商推出的運算平台,如果顯卡廠商不是NVIDIA,那么,我“不負責任”地說,CUDA不適合你的電腦,到別處玩沙去吧!(或許已經有其它廠商制造的顯卡支持CUDA了,但絕大部分,都不支持)。如果你的顯卡是N卡,也沒急着偷笑,因為太老的N卡也是要去邊上玩沙的。
我的機器的基本配置:
- 處理器 intel i3-2120
- 內存 8GB
- 顯卡 NVIDIA GeForce 405 OEM 512MB
- 系統 Windows7 64bit
配置很差吧,我都懶得港-。-!
首先可以在NVIDIA的官方網站查看顯卡是否在支持的列表中。下面我截了兩幅圖,為了圖文並茂而已,而且也只是部分。
我在這上面沒查到我的GeForce 405,心想完了,科研舉步維艱啊!后來又想,可能我這個顯卡年代過於久遠,人家懶得在列表里列出來,況且您好我截了兩張圖都還沒列全呢!后來我不斷查資料時,發現有博主說,上面那個表不是特別全,然后給了一個NVIDA的硬件設備網站,說是可以在上面查看是否支持!就是這個鏈接——>點我
還有的說法是說GPU-Z也可以查看是否支持,
不過聽說這個軟件有時會失准,所以最好還是查看硬件的支持信息。
開始安裝
看來我的顯卡還是支持CUDA的,接下來就要選一個合適版本的CUDA了。那怎么知道我的顯卡支持的CUDA最高版本是哪一個呀?為此我又百度了很久,終於功夫不負有心人,在一個論壇的網友提問中找到了答案。
有時真的是感慨互聯網搜索功能之強大!你遇到的問題,基本上都會有人遇到過並解決!
於是乎,我就打開了NVIDIA控制面板,找到了NVCUDA.DLL信息顯示欄,截圖如下:
看來我的顯卡支持的CUDA最高版本只到6.5,現在都出到8.0了,再次感慨電腦配置之差!
下載了正確的CUDA版本,安裝便是,在這里提醒兩點:
1、不要選擇精簡模式安裝,而是全部安裝,因為選擇精簡安裝后,SDK包是默認不安裝的,但是實際使用時,是要用到SDK中的內容的。
2、在安裝過程中,提示:"This graphics driver could not find compatible graphics hardware....",一定不要點“繼續”,如果點了,后續你就會遇到開頭我說的那種問題,所以,一定慎重!
CUDA driver version is insufficient for CUDA runtime version.
所以安裝CUDA之前,一定一定要確定好你的顯卡支持的最高版本,尤其是那些顯卡老舊的人(最新換的顯卡就無所謂啦,裝個最高版本的,妥妥的!)
驗證CUDA是否安裝完成並能使用
安裝完之后,得確認是否安裝正確,打開命令提示框cmd,輸入命令“nvcc -V”,如果安裝正確,會顯示下面的結果:
顯示CUDA的版本是V6.5.13。
當然,這只是表明你安裝CUDA正確,但並不表示能用,要驗證是否能用,還需使用到CUDA提供的例子。
1、在例子的安裝目錄下,找到解決方案的名字。比如我的例子的安裝路徑是
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5
然后在
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\1_Utilities
下,找到bandwidthTest文件夾下的bandwidthTest_vs2013.sln ,有幾個不同版本的解決方案,我使用的是vs2013,所以選擇這個。
2、開始編譯,運行生成控制台程序如下:
看到Result=PASS 就可以安心了。
還有一個例子是deviceQuery文件夾下的deviceQuery_vs2013.sln ,編譯后運行的結果如下:
同樣,看到Result=PASS 就可以放心了!
到這里,CUDA確定是可用了,可以起身抽支煙放松放松~
四、caffe環境的配置
我配了幾次caffe環境,每次都是參照這個博文里的步驟配置的http://blog.csdn.net/chenqibob/article/details/52135614
雖然使用的是CUDA7.5,但步驟是一致的,參考的時候注意路徑、環境變量、依賴庫、包含目錄、庫目錄等問題即可!
遇到的問題:
1、出現“應用程序無法正常啟動(0xc000007b)”
可能是因為:
a.需要把./3rdparty/bin的路徑加入到系統環境變量Path中;
b.之前使用的opencv是win32位的,而caffe使用的Release是64位配置的,因此在環境變量中既要配x86的opencv的vc12\bin,也要有x64的vc12\bin。
2、在使用CUDA6.5版本生成解決方案后,編譯時,出現:
【conv_layer.cu】 錯誤 78 error: too few arguments in function call
點擊這個錯誤,定位到錯誤行
在某論壇上看到的解決方法是在最后加入第四個參數“false”,即更改為
重新編譯后,該錯誤消失。
3、在使用CUDA6.5版本編譯時,遇到了一個問題:
CUDA fatal error "Invalid device function "
出現這個問題,說明你的gpu超荷載了,你得查查自己的gpu的計算能力,怎么查呢?我用的是GPU-Z查看的,
我的gpu的計算能力為1.2(極低!),但我參照博客配置時,在code Generation中使用的是compute_20,sm_20,所以一直出錯,后來按照自己的計算能力,更改一下就編譯通過了!
另外我想補充的是以下幾點:
1、CUDA的用處:目前隨着硬件技術的進步,常使用GPU(Graphics Processing Unit,圖形處理器)來進行神經網絡算法的訓練及實現。GPU計算的基礎是Nvidia的CUDA環境。
2、Caffe的主版本(caffe-master)只支持Linux,所以要下載專門的caffe windows版本。
3、Caffe的編譯需要第三方庫的支持,3rdparty即為所需的第三方庫,通常包括了:
a.boost函數庫,下載地址是http://www.boost.org/ ,下載需要的版本庫。
b.Opencv開源計算機視覺庫,到官網下載就好。
c.OpenBlas,是一個高性能的多核BLAS(Basic Linear Algebra Subprograms,基礎線性代數子程序庫),下載地址是http://www.openblas.net/ ,注意要下載64位的window版本。
d.glog是google的開源API,但是google是上不去的,翻牆吧-。-
e.levelldb,也是谷歌的開源庫,下載地址也在google上,不過這里有個鏈接可以直接下載https://leveldb.googlecode.com/archive/windows.zip
f.protobuf,也是谷歌的開源庫,下載地址也在google上,在百度雲找到一個版本http://pan.baidu.com/s/1pJlZubT
參考博客:
1、在Windows8.1上安裝CUDA (【檢查顯卡】參照內容)
2、CUDA7.5安裝和vs2013配置 (【安裝CUDA】參照內容)
3、Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe環境(【配置caffe環境】參照內容)
4、配置Caffe+VS2013+CUDA 6.5+Windows 8.1 64位系統(【遇到的問題之2】參照內容)
5、cuda-convnet在Windows下的使用 錯誤(error:invalid device function) (【遇到的問題之3】參照內容)
感恩!
以上。