Windows8.1(64位)下用vs2013编译cxxnet
2015-06-22 16:40
267 查看
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文件即可,如下图所示。
关于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文件即可,如下图所示。
相关文章推荐
- Oracle数据库入门
- TDD随想录
- ASP.NET错误
- AndroidAnnotations说明—AndroidAnnotations它是如何工作的?
- 使用ab测试工具 进行并发测试
- Android的简单应用——应用dispatchKeyEvent双击退出法度
- Unity3D 系统宏
- jquery根据name属性查找元素
- jvm的GC日志分析
- Android 打造任意层级树形控件 考验你的数据结构和设计
- BZOJ3506 [Cqoi2014]排序机械臂(离散化+Splay)
- 入门篇ExpandableListAdapter(简易树形组件)
- 设计模式之代理模式
- Ajax File Upload Response Handling
- LintCode 判断一个二叉树树是否是另一个二叉树的子书
- 修改科技论文的6项注意
- js中几种实用的跨域方法原理详解
- 解释int a=9;printf("%d,%d",a,a++)?输出情况
- 【孙鑫】HTML基础
- Ajax File Upload