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

1.      下載

關於cxxnet的平臺請參考http://www.csdn.net/article/2015-05-21/2824742?reload=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(https://a-dda.googlecode.com/files/adda_1.2_win64.zip),將其中的libgfortran_64-3.dll和libquadmath_64-0.dll拷貝到cxxnet的bin目錄下,並將libgfortran_64-3.dll修改爲libgfortran-3.dll即可。

然後運行bat文件即可,如下圖所示。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章