下载安装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<typename T>_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<IUnknown*>(*pp);// make sure everyone derives from IUnknown
returnreinterpret_cast<void**>(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头文件的文件夹对吧 所以放这里就好了 就可以解决这个问题了。