xinxuaw231 发表于 2017-6-29 09:41:55

在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 compilewith 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 ..."代替
页: [1]
查看完整版本: 在windows上Matlab 编译MatConvNet