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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM