码迷,mamicode.com
首页 > Windows程序 > 详细

在windows上Matlab 编译MatConvNet

时间:2016-06-24 19:03:32      阅读:3282      评论:0      收藏:0      [点我收藏+]

标签:

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 ..."代替

 

在windows上Matlab 编译MatConvNet

标签:

原文地址:http://www.cnblogs.com/logicfool/p/5614912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!