有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU。

费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数)

这里下载MatConvNet,机器配置vs2010,Matlab2014a,CUDA6.5。

  1. 进入Matlab,切换到{matconvnet_root}:
    1. mex -c -largeArrayDims -lmwblas "matlab/src/bits/im2col.cpp"
    2. mex -c -largeArrayDims -lmwblas "matlab/src/bits/pooling.cpp"  
    3. mex -c -largeArrayDims -lmwblas "matlab/src/bits/normalize.cpp"
    4. mex -c -largeArrayDims -lmwblas "matlab/src/bits/subsample.cpp"
  2. 打开VS command prompt,切换到{matconvnet_root}:
    1. 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"
    2. 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"

    3. 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"

    4. 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"

  3. 再次切换到Matlab:
    1. setenv('MW_NVCC_PATH','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin')
    2. 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

    3. 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
    4. 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的更多相关文章

  1. 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法

    这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...

  2. [ZZ] 在windows上编译Mesa3d opengl32库

    在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...

  3. 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl

    利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...

  4. 在windows上编译wireshark源代码

    终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...

  5. 在windows 上编译部署Rap2

    在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...

  6. 如何在 Windows上编译Objective-C

    Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...

  7. Windows 上编译 corefx 源码生成 Linux 上可用的 System.Data.SqlClient.dll

    最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点. github 上签出 corefx 的源代码,运 ...

  8. 在Windows上编译和调试CoreCLR

    生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...

  9. .netcore跨平台 之 windows上编译,ubuntu上运行

    1 下载并安装netcore sdk    下载地址 https://github.com/dotnet/cli 选取合适的版本下载安装即可 打开 CMD ,输入dotnet,出现以下信息说明已安装好 ...

随机推荐

  1. 使用Visual Studio创建映像向导(Image Sprite)——Web Essential

    原版的:Creating Image Sprite in Visual Studio - Web Essential 译者注:有关图片精灵的信息请參阅http://baike.baidu.com/vi ...

  2. 【百度地图API】建立全国银行位置查询系统(五)——如何更改百度地图的信息窗口内容?

    原文:[百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 摘要: 酷讯.搜房.去哪儿网等大型房产.旅游酒店网站,用的是百度的数据库,却显示了自定义的信息窗口内容,这是 ...

  3. C控制语句--分支和跳转

    /*C控制语句--分支和跳转*/ /*关键字 if else switch continue break case default goto 运算符:&&(且) ||(或) ?:(三元 ...

  4. UI 收集

    semantic http://www.semantic-ui.com.cn/modules/reveal.html sbadmin http://startbootstrap.com/templat ...

  5. JAVA进阶-注解

    注解元数据分为4部分分别为Target,Documented,Inherited,Retention: Target>指定被注解的注解仅仅能使用在某个类型上;ElementType指定其类型:能 ...

  6. SQL编程之生日问题

    在学习MySQL的时候,一个较为经典的SQL编程题目就是生日问题,已知某个用户的出生日期和当前日期,计算他近期的生日. 一般须要考虑两个问题 闰年2月是29天 今年的生日是否过完 比如:某人的生日是1 ...

  7. C语言库函数大全及应用实例十三

    原文:C语言库函数大全及应用实例十三                                          [编程资料]C语言库函数大全及应用实例十三 函数名: stat 功 能: 读取打 ...

  8. C#修改用户名

    string strCmdText; strCmdText = "useraccount where name='" + 旧密码 + "' rename " + ...

  9. ckplayer

    ckplayer 的使用基本功能实现(一) 有个项目里用到视频播放功能,虽然是国产的插件,但我觉得做的还是不错,而且是免费使用,顺便支持下国内的一些项目(O(∩_∩)O~). 一.首先去官网下载 插件 ...

  10. Visual Studio 单元测试之五---数据库测试

    原文:Visual Studio 单元测试之五---数据库测试 数据库的单元测试主要是测试数据库中的数据是否符合特定的条件,Visual Studio 2010支持下面几种数据的单元测试类型(Visu ...