在windows上编译MatConvNet
有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU。
费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数)
在这里下载MatConvNet,机器配置vs2010,Matlab2014a,CUDA6.5。
- 进入Matlab,切换到{matconvnet_root}:
- mex -c -largeArrayDims -lmwblas "matlab/src/bits/im2col.cpp"
- mex -c -largeArrayDims -lmwblas "matlab/src/bits/pooling.cpp"
- mex -c -largeArrayDims -lmwblas "matlab/src/bits/normalize.cpp"
- mex -c -largeArrayDims -lmwblas "matlab/src/bits/subsample.cpp"
- 打开VS command prompt,切换到{matconvnet_root}:
- nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/im2col_gpu.cu"
nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/pooling_gpu.cu"
nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/normalize_gpu.cu"
nvcc -c -gencode=arch=compute_20,code=sm_21 -gencode=arch=compute_30,code=sm_30 --compiler-options=-fPIC "matlab/src/bits/subsample_gpu.cu"
- 再次切换到Matlab:
- setenv('MW_NVCC_PATH','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin')
mex "matlab/src/vl_nnconv.cu" "normalize.obj" "normalize_gpu.obj" "pooling.obj" "pooling_gpu.obj" "subsample_gpu.obj" "subsample.obj" "im2col_gpu.obj" -DENABLE_GPU -f mex_CUDA_win64.xml -largeArrayDims -lmwblas -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\lib\x64" -lcublas -lcudart /NODEFAULTLIB:LIBCMT.lib
- mex "matlab/src/vl_nnnormalize.cu" "normalize.obj" "normalize_gpu.obj" "pooling.obj" "pooling_gpu.obj" "subsample_gpu.obj" "subsample.obj" "im2col_gpu.obj" -DENABLE_GPU -f mex_CUDA_win64.xml -largeArrayDims -lmwblas -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\lib\x64" -lcublas -lcudart /NODEFAULTLIB:LIBCMT.lib
mex "matlab/src/vl_nnpool.cu" "normalize.obj" "normalize_gpu.obj" "pooling.obj" "pooling_gpu.obj" "subsample_gpu.obj" "subsample.obj" "im2col_gpu.obj" -DENABLE_GPU -f mex_CUDA_win64.xml -largeArrayDims -lmwblas -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\lib\x64" -lcublas -lcudart /NODEFAULTLIB:LIBCMT.lib
编译完成,运行'matlab/xtest/vl_test_nnlayers(1)'通过。大概就是这个样子。
听小J说,有个比较奇怪的地方:在做卷积的时候,在GTX980、GTX970显卡上会报错。仔细验证过,不是CUDA SDK的问题,也不是显卡驱动的问题,使用GTX660这些显卡无异常。初步怀疑可能由于Maxwell架构指令集与Kepler架构指令集不兼容导致,不过这些就不是我要考虑的了。
P.S. 对源文件做过小改动,主要是替换一些linux上的函数。
在windows上编译MatConvNet的更多相关文章
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- [ZZ] 在windows上编译Mesa3d opengl32库
在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...
- 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl
利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...
- 在windows上编译wireshark源代码
终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...
- 在windows 上编译部署Rap2
在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...
- 如何在 Windows上编译Objective-C
Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...
- Windows 上编译 corefx 源码生成 Linux 上可用的 System.Data.SqlClient.dll
最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点. github 上签出 corefx 的源代码,运 ...
- 在Windows上编译和调试CoreCLR
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
- .netcore跨平台 之 windows上编译,ubuntu上运行
1 下载并安装netcore sdk 下载地址 https://github.com/dotnet/cli 选取合适的版本下载安装即可 打开 CMD ,输入dotnet,出现以下信息说明已安装好 ...
随机推荐
- UVa 740 - Baudot Data Communication Code
称号:目前编码,他们shift键被按下,并提出,对应的两个编码,其中,2相应的编码shift操作. 给你适当的编码值.寻求相应的字符串. 分析:模拟.字符串. 简单题,标记shift的升降分类处理就可 ...
- linux内核源码目录(转)
Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大约包含200万行代码,大概占用58MB磁盘空间. 源代码所有在目录:/usr/src/linux ...
- MongoDb的副本集搭建教程(个人操作笔记)
很多公司都在用MongoDb ,一直没有时间研究,最近好好的整了一下,做下笔记,直接上操作步骤,关于Mongodb的理论知识可以搜索其他资料,也可以联系我索取 mongoDB官方已经不建议使用主从模式 ...
- 分析Cocos2d-x横版ACT手游源 2、server场景
仍然一样 直接在代码 资源 下一个 上传 你可以看到自己 NFServerChangeLayer.h </pre><pre name="code" class=& ...
- java设计模式之单例模式(七种方法)
单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...
- JS模块与命名空间的介绍
起因将代码组织到类中的一个重要原因是让代码更加“模块化”,可以在很多不同的场景中实现代码的重用.但类不是唯一的模块化代码的方式. 一般来讲,模块是一个独立的JS文件.模块文件可以包含一个类定义.一组相 ...
- 删除Python UserWarning[已解决]
在使用MySQLdb包后,导入测试时发现一个警告. /usr/lib/python2.6/site-packages/setuptools-0.8-py2.6.egg/pkg_resources.py ...
- div、ul、li等无法居中问题,text-align无效 margin auto无效
很简单.如果是div,直接把div换成: <table align="center"> <tr> <td> ...
- 基于C++11线程池
1.包装线程对象 class task : public std::tr1::enable_shared_from_this<task> { public: task():exit_(fa ...
- TRIGGER的使用(修改SP自动触发)
CREATE TRIGGER [trg_save_change_SP] ON DATABASE FOR CREATE_PROCEDURE, ALTER_PROCEDURE,DROP_PROCEDURE ...