matconvnet配置:WIN7(64w)+MATLAB2016a+cuda7.5+CUDNN5.1+VISUAL STUDIO2013+matconvnet-1.0-beta24+1050TI显卡

下载安装MATLAB2016a+cuda7.5+CUDNN5.1+VISUAL STUDIO2013+matconvnet-1.0-beta24这些版本,将cudnn5.1下的文件复制到matconvnet-1.0-beta24\local文件夹下,local自己创建.

cudnn5.1文件中bin文件下的cudnn64_5.dll复制到matconvnet-1.0-beta24\matlab\mex文件下

1、在matlab2016a运行mex -setup,选择“Microsoft Visual C++ 2013 Professional编译”;

2、运行 matconvnet-1.0-beta24/matlab中的 vl_compilenn.m

出现MEX 已成功完成。

3、运行测试

运行 matconvnet-1.0-beta24\matlab\xtest目录下的vl_testnn.m

直至0 failed.

3、在命令行运行
vl_compilenn('enableGpu',true,'cudaRoot','C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5','cudaMethod' ,'nvcc','verbose', '2','enableCudnn','true','cudnnRoot','\local\cudnn5.1')

出现MEX 已成功完成。

(1)当报错 nvcc fatal   : Unsupported gpu architecture 'compute_61'

最终得到解决方案:

在vl_compilenn.m中找到,下面这句代码下面:

  cudaArch = ...
      sprintf('-gencode=arch=compute_%s,code=\\\"sm_%s,compute_%s\\\" ', ...
              arch_code, arch_code, arch_code) ;

直接加一句:

  cudaArch ='-gencode=arch=compute_50,code=\"sm_50,compute_50\" ';

强行让cudaArch等于我们想要的值即可。

 

(2)当报错error: ...\Windows Kits\8.1\Include\um\combaseapi.h "IUnknown" is undefine

解决方案:在Windows Kits\8.1\Include\um\combaseapi.h文件找到下面位置,添加一行  interfaceI Unknown;

 

interfaceI Unknown;// ADD THIS LINE HERE

extern"C++"

{

template_Post_equal_to_(pp)_Post_satisfies_(return== pp)void** IID_PPV_ARGS_Helper(T** pp)

{

#pragma prefast(suppress:6269,"Tool issue with unused static_cast")

static_cast(*pp);// make sure everyone derives from IUnknown

returnreinterpret_cast(pp);

}

}

4、运行测试

vl_compilenn('enableGpu', true,'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot','F:\MATLAB\matconvnet\local\cudnn5.1');

vl_testnn('gpu', true);

1.ERROR: 错误使用 vl_compilenn>nvcc_compile (line 615)
Command "D:\Program Files\MATLAB\CUDA\9.1\bin\nvcc" -c -o "D:\Program Files\MATLAB\matconvnet\matlab\mex\.build\bits\data.obj" "D:\Program
Files\MATLAB\matconvnet\matlab\src\bits\data.cu" -DENABLE_GPU -DENABLE_DOUBLE -DENABLE_CUDNN -I"local\cudnn-9.1\include" -O -DNDEBUG
-D_FORCE_INLINES --std=c++11 -I"D:\Program Files\MATLAB\R2016b\extern\include" -I"D:\Program
Files\MATLAB\R2016b\toolbox\distcomp\gpu\extern\include" -gencode=arch=compute_61,code=\"sm_61,compute_61\"  --compiler-options=/MD
--compiler-bindir="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\..\VC\bin"  failed.
出错 vl_compilenn (line 487)
      nvcc_compile(opts, srcs{i}, objfile, flags) ;

仔细看了一遍,发现没看懂。

 

其实翻译成人类语言就是:在data.cu处   找不到'cudnn.h'

那么问题就很好解决了

将自己下载的local文件夹下的cudnn文件夹下的\cuda\include下的cudnn.h复制粘贴到你所装的CUDA根目录下的\include下 你一打开就可以看到是CUDA专门放h头文件的文件夹对吧  所以放这里就好了  就可以解决这个问题了。
 

你可能感兴趣的:(matconvnet配置:WIN7(64w)+MATLAB2016a+cuda7.5+CUDNN5.1+VISUAL STUDIO2013+matconvnet-1.0-beta24+1050TI显卡)