Windows平台
一、下载
在官网下载最新版的压缩包并解压。
二、 编译CPU版本
在此步骤开始之前需要额外安装C/C++编译器,Windows环境下推荐安装Visual Studio,目前Community Edition可以免费使用。
进入MatConvNet根目录。
1、 打开MATLAB,输入mex -setup
命令确认MATLAB的C/C++编译器为“Microsoft Visual C++ 2017 (C)”,其实安装好VS后,MATLAB就已经将VS作为默认的C/C++编译器了。
2、 进入matlab目录,运行vl_compilenn.m
:
run vl_compilenn.m
提示如下内容,则说明编译成功:
Building with 'Microsoft Visual C++ 2017'. MEX completed successfully.
此时mex目录下出现许多*.mexw64
文件。可以直接跳至第三步。
3、 如遇到“Unable to find cl.exe”这个错误,则需要设置cl.exe的环境变量:
以我使用的平台(Windows 10 Pro 1709, Microsoft Visual Studio 2017Community Editon)和安装位置为例:
右键此电脑 - 属性 - 高级系统设置 - 环境变量,编辑“系统变量”中的Path变量,新建如下两个位置:
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\Hostx64\x64 D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE
添加完成后点击确认。
至于是选择x86目录还是x64目录,根据你使用的操作系统的位数选择,32位和64位操作系统均可选择x86,64位建议选择x64。
在“系统变量”中新建LIB
变量,并添加以下三个路径:
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\lib\x64 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\ucrt\x64 C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x64
在“系统变量”中新建INCLUDE
变量,并添加以下两个路径:
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt
在“环境变量”窗口点击确认,完成环境变量设置。
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
这个路径中打开批处理程序vcvarall.bat
。运行完毕后重新启动计算机,重新运行vl_compilenn.m
。
三、 编译GPU版本
在此步骤开始前需要安装CUDA以及cuDNN,并将cuDNN压缩包下的include
bin
lib
目录复制到CUDA的安装目录(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0)。
1、 在MatConvNet根目录下建立./local/cudnn
目录,并将cuDNN压缩包下的include
lib
目录复制进其中。
2、 将cuDNN压缩包下bin
目录里的cudnn64_7.dll
复制到MatConvNet\matlab\mex
目录中。
3、 在MATLAB中执行:
vl_compilenn('enableGPU', true, ... 'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0', ... 'cudaMethod', 'nvcc', ... 'enableCudnn', true, ... 'cudnnRoot', 'local/cudnn');
等待编译完成即可。
我在编译的过程中遇到了一个错误(line 615),将D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503
下的bin
目录复制到D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\
即可解决。
四、 测试例程
进入MatConvNet\examples\mnist
目录,打开cnn_mnist.m
。
CPU方式运行
无需任何更改直接运行即可。
GPU方式运行
将第21行改为:
if ~isfield(opts.train, 'gpus'), opts.train.gpus = [1]; end;
运行。
看输出状态的频率部分可以发现GPU极大地提升了训练速度。
CPU Mode:
GPU Mode:
Linux平台
一、下载
在官网下载最新版的压缩包并解压。
二、 编译CPU版本
开始编译之前需要输入mex -setup
命令检查MATLAB所使用的C/C++编译器的版本,MatConvNet(版本1.0-beta25)建议使用[gcc/g++ 4.9]进行编译,亲测使用较高的gcc/g++版本会出现一些莫名其妙的错误。如果MATLAB返回结果不是[gcc/g++ 4.9]的话,我们需要以如下方式替换[gcc/g++ 4.9]与当前编译器的优先级:
#确保[gcc/g++ 4.9]已经安装: ~$ sudo apt-get install gcc-4.9 g++-4.9 #将gcc-4.9设置为"priority=100",gcc-5.0设置为"priority=50": ~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 100 ~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 #将g++ 4.9设置为"priority=100",g++ 5.0设置为"priority=50": ~$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 100 ~$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50 #验证优先级设定是否完成: ~$ update-alternatives --query gcc ~$ update-alternatives --query g++
确认无误后,运行vl_compilenn.m
进行CPU编译即可。
三、编译GPU版本
在此步骤开始前需要安装CUDA以及cuDNN。其中CuDNN只需将压缩包解压至MatConvNet目录下即可。关于Linux下CUDA的安装,可以参考:
输入以下命令进行编译:
vl_compilenn('enableGpu', true, ... 'cudaMethod', 'nvcc', ... 'cudaRoot', '/usr/local/cuda-9.0', ... 'enableCudnn', true, 'cudnnRoot', '/home/xyu/Documents/MATLAB/matconvnet-1.0-beta25/local/cudnn');
'cudaRoot'
为CUDA的安装路径,'cudnnRoot'
为cuDNN的安装路径。
如果在编译过程出现“Warning: Setting the ‘MW_NVCC_PATH’ environment variable to ‘/usr/local/cuda-9.0/bin/nvcc’”,需要在环境变量中加入MW_NVCC_PATH
项:
sudo /etc/profile 在最后一行加入: export MW_NVCC_PATH=/usr/local/cuda-9.0/bin/nvcc:$MW_NVCC_PATH 保存后: sudo source /etc/profile
如果在编译过程出现”build with ImreadJpeg
error”,需要打开vl_compilenn.m
,进行如下更改:
set opts.enableImreadJpeg = false;
重新编译即可。