1. 程式人生 > >Windows8.1(64位)下用vs2013編譯cxxnet

Windows8.1(64位)下用vs2013編譯cxxnet

1.      下載

https://github.com/dmlc下載cxxnet、dmlc-core、rabit、m-shadow,另外就是parameter_server是可選擇的,本教程不包括。Opencv在官網下載即可,最好是2.4.10版本的,這樣cxxnet的解決方案中就不必修改了。Openblas下載最新的即可。

2.      工程屬性修改

在cxxnet/windows/3rdparty目錄下拷貝opencv和openblas相關檔案,拷哪些檔案可參考cxxnet.vcxproj內容,同時需要將cxxnet.vcxproj中的cuda6.5改成你安裝的cuda的版本(一般有兩處),然後才能順利開啟sln。其他幾個配套的庫,dmlc-core和rabit需要單獨編譯成lib庫,也需要修改對應的vcxproj檔案,m-shadow是和cxxnet一起編譯的,所以不需要。

配置dmlc-core庫時,將平臺修改為x64,附加包含目錄新增 $(SolutionDir)\..\..\dmlc-core\include,配置型別改為靜態庫lib,平臺工具集要保持統一,我採用v120(否則後期會報版本錯),編譯成功後將dmlc.lib的目錄新增到cxxnet的庫目錄中並新增附加依賴項,或者將dmlc.lib拷貝到cxxnet已有庫目錄中並新增附加依賴項。

Rabit與dmlc-core差不多,不再贅述。

3.      程式碼修改

在各種依賴庫都齊全後,立即編譯cxxnet還會出問題,因為cxxnet的windows更新沒有原linux版本的速度快,因此會報錯。

a)      /ox與/rtc1命令列選項不相容

將優化選項改為/od

b)      'Assert' : is not a member of'cxxnet::utils'

將cxxnet::utils改為rabit::utils::Assert

c)       syntax error : identifier'ImageRecordIOIterator'

"iter_image_recordio-inl.hpp"檔案中新增#define DMLC_USE_CXX11 1

4.      執行。

編譯成功後,在example/mnist目錄下新建data和models目錄,data下需要的四個mnist檔案不再贅述,再新增bat檔案,內容如下:

..\..\bin\cxxnet.exe MNIST.conf

Pause

執行bat檔案,可能會報錯,需要libgfortran-3.dll,則下載adda_1.2_win64(),將其中的libgfortran_64-3.dll和libquadmath_64-0.dll拷貝到cxxnet的bin目錄下,並將libgfortran_64-3.dll修改為libgfortran-3.dll即可。

然後執行bat檔案即可,如下圖所示。