在windows上Matlab 编译MatConvNet

windows 10 64 bits

matlab 2015b/2016a

MatConvNet 1.0-beta20 或者从github 下载GIT repository

CUDA GPU Computing ToolKit 7.5

cudnn-rc4/cudnn-rc5

都按照官网http://www.vlfeat.org/matconvnet/

配置好了之后,

编译命令

vl_compilenn(‘enableGpu‘, true, ...
    ‘cudaRoot‘,‘C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5‘,...
    ‘cudaMethod‘, ‘nvcc‘, ...
    ‘enableCudnn‘, true, ...
    ‘cudnnRoot‘, ‘local\cudnn-rc4‘,...
    ‘verbose‘,‘2‘,...
    ‘debug‘,‘1‘);

  

主要遇到两个问题

1.找不到’cudnn.h’,这个是cudnnRoot路径配置问题,官网的意思是在MatConvNet目录下新建local文件夹,之后把cudnn放到local文件夹下,打开local\cudnn-rc4应该看到三个文件夹include,bin,lib,编译时要在MatConvNet目录下进行,先输入addpath matlab加入matlab文件路径。提示,直接nvidia官网下载的cudnn解压后应该是多出一级中间目录cuda,比如cudnn\cuda\,在编译时可以把cudnn路径写成"local\cudnn-rc4\cuda",或者手动把中间目录缩减

2.编译vl_compilenn出错

原代码

if opts.enableCudnn
  flags.cc{end+1} = ‘-DENABLE_CUDNN‘ ;
  flags.cc{end+1} = [‘-I‘ opts.cudnnIncludeDir ] ;
end

 文件路径出错,在报错信息里-I后跟cudnnIcludeDir路径没有加双引号 

修改后,一开始很盲目,看了mathworks上的回答采取认真看出错信息,仔细点应该能发现问题

if opts.enableCudnn
  flags.cc{end+1} = ‘-DENABLE_CUDNN‘ ;
  flags.cc{end+1} = [‘-I"‘ opts.cudnnIncludeDir ‘"‘] ;%http://cn.mathworks.com/matlabcentral/answers/264961-having-problem-in-matconvnet-to-compiling-the-cudnn-support "opts.cudnnIncludeDir"
end

github上最新版本已经修复这个问题

3.nvcc 编译MatConvNet\matlab\src\bits\impl\nnbilinearsampler_cudnn.cu报错 在250行左右 undefined "backward" identifier

因为在

template<typename type, bool backwardData, bool backwardGrid>
static vl::Error
forward_backward

  函数中缺少backward的定义,仿照前面的

template<typename type>
__global__ void grid_backward_kernel

  函数中的方式在函数开始部分添加

  bool backward = backwardData;//added here for cudnn compile  with undefined ‘backward‘ identifier

 发现backward或者backwardData只是一个bool 型的值作为一个选项 

4.编译MatConvNet\matlab\src\bits\impl\nnbilinearsampler_cudnn.cu出错,第24行

#warning "bilinearsampler_cudnn.cu will be disabled as it requires CUDNN v5 or higher."

 报,无效的预编译指令“warning” 

原来,gcc,C# 中有#warning指令,MSVC C\C++中没有#warning 指令,可以用#pragma message "warning ..."代替

时间: 2024-11-03 21:05:46

在windows上Matlab 编译MatConvNet的相关文章

netcdf源码在windows上的编译

作者:朱金灿 来源:http://blog.csdn.net/clever101 今天搞搞netcdf源码在windows上的编译,折腾了半天,算是搞成了,特地记录一下过程.我的目标是要生成netcdf的工程文件.netcdf依赖于hdf5.zlib和curl这三个库. 首先在HDF5 Source Code下载最新的hdf5源码,然后使用CMake来生成编译hdf5的解决方案,如下图: 再下载netcdf的源码:NetCDF Downloads,开始使用CMake来生成netcdf的解决方案,

Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器

Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器  大 | 中 | 小  [ 2011-3-30 08:40 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.zyan.cc/libevent_windows/] 本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 L

Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(无数截图)

[文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序:httpd.exe. 假设 Visual Studio 2005 的安装路径为“D:\Program

Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(图文并茂,还有实例下载)

[文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序:httpd.exe. 假设 Visual Studio 2005 的安装路径为“D:\Program

在Windows上一键编译各种版本的Protobuf

所需工具 : cmake  for  windows 和  git for windows 原理:protobuf 是google的一个开源项目,其源代码在github上可以下载到,并且源码都采用cmake来构建,所以我们可以把源码下载到本地,然后了利用cmake构建本地工程,然后编译. 步骤一:下载源码 复制以下代码,保存到 download_protobuf_source.bat 文件中,运行即可 ::参考文章 https://github.com/google/protobuf/blob/

windows 上 怎样编译 php 和 xdebug的 源代码

网上有很多的php源代码编译介绍,但是几乎没有xdebug 的源码编译的介绍,我这里结合自己的实际操作来谈一下,其中也会涉及到apache源代码的编译. 1. php编译 我们以vs2008来作为编译工具:其他还需要php的编译套件,这个可在php官方网下载http://windows.php.net/downloads/php-sdk/,下载这个吧: php-sdk-binary-tools-20110915.zip 假设把它释放到e:\php-sdk目录下 从开始菜单进入command-li

Agg:Windows上GCC编译Agg

本文记录用TDM64-GCC(MingGW的变种)编译Agg2.5的过程.操作系统win8.1 64位,编译器TDM64-gcc. 首先,TDM64-GCC只提供了一套编译环境,还有一些posix命令没有提供,例如ls,rm等,简单的办法就是装Git,有一个选项,会提供这些工具.解压agg2.5,将Makefile.in.MINGW32_NT-5.1复制一份,重命名为Makefile.in.MINGW32_NT-6.1,然后,直接编译就可以过: cd agg-2.5 make 因为是64位编译器

Mac OS X上尝试编译CoreCLR源代码

CoreCLR登陆GitHub之后,体验CoreCLR首当其冲的方式就是在自己的电脑上编译它,昨天分别在Windows与Linux上成功编译了CoreCLR,详见: 1)Windows上成功编译CoreCLR源代码 : 2)Linux上成功编译CoreCLR源代码 . Windows与Linux上编译成功之后,有一个挡不住的冲动——在Mac上编译CoreCLR.虽然微软目前优先考虑的是Windows与Linux两个平台,CoreCLR的编译暂时不支持Mac OS X,但我最期待的却是在Mac O

在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 -lmwbla