Caffe初試(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe環境


 

折騰了幾天,終於在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】參照內容)

 

感恩!

以上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM