即使找到了安装方法,每个人的系统多少都有些差异,总有些坑要踩过才知道实际情况是怎么样的。我的环境是Lenovo V480 + Ubuntu 16.04 + GeForce GT 645M。安装过程是参考这篇博客——Ubuntu 16.04 安装配置Caffe 图文详解。需要完成的步骤有:

  1. 安装相关依赖项
  2. 安装NVIDIA驱动
  3. 安装CUDA
  4. 配置cuDNN
  5. 安装OpenCV
  6. 安装Caffe
  7. 测试

这位博主的过程记录很详细,但有些细节方面我的问题有些不一样。我记录我的问题,希望有同样问题的人可以得到帮助

  1. NVIDIA显卡驱动安装
  2. 安装OpenCV
  3. 安装caffe
  4. 后记

1.NVIDIA显卡驱动安装

开始安装NVIDIA显卡驱动进入一个“building kernel”的界面,中间的进度条卡在100%好长时间,我以为已经安装完成就强制关机了。但开机发现笔记本变得超级慢,查询显卡驱动也显示未定义命令。这才意识到显卡驱动并没有安装完成。实际整个安装过程的确很耗时,而且也没什么提示,所以不要关机,耐心等他装完。中间还给出两次警告,一次是提示“pre-install script failed........”,我选择继续安装。还有一次是提示什么配置,我也是选择继续。安装结束后提示“Unable to find a suitable destination to install 32-bit compatibility”。我不是很能理解为什么安装64位驱动会涉及与32位的匹配问题。
第一遍装完后系统还是有问题,一方面分辨率不对,另一方面循环进入登录界面。解决方案是参考这篇博客Ubuntu安装NVIDIA驱动后桌面循环登录问题。先删除了NVIDIA的驱动文件,然后用

sudo ./NVIDIA-Linux-x86_64-375.20.run –no-x-check –no-nouveau-check –no-opengl-files

当然驱动文件名是自己的。这一次在tty1终端中,安装的时候并没有停止X-Windows服务,发现对安装并没有影响。这一次驱动安装成功,但是分辨率还是有问题,借鉴这篇博客 ubuntu16.04中用xrandr设置屏幕分辨率,且重启后不失效。到这里显卡驱动终于修正过来了。

不过输入“nvidia-smi”弹出的信息显示GPU的Process name项为Not Supported。我浏览其他人的看法。有人认为这是NVIDIA对老显卡的显示信息不正确,但实际上显卡也是工作的。也有人认为是新的驱动与显卡兼容性不好,所以显卡不能正常工作,导致实际上是CPU中的集显在承担任务。但无论怎样并不影响后续的安装与caffe的运行。

2.安装OpenCV

我笔记本之前已经安装了OpenCV,本以为可以不用安装,所以直接进行caffe的安装,结果出问题了。所以把OpenCV卸载之后重新编译安装一遍。结果超出想象。原本OpenCV只用一个小时左右就可以安装完成,没想到在CUDA的环境下用了5个多小时才编译完成。或许是我的电脑太渣了。所以OpenCV一定要在CUDA环境配置好了之后再安装。

安装OpenCV中反复出现一个warning,not used because“ OPENCV_TRAITS_ENABLE_DEPRECATED ”has been defined。几乎每编译一个文件都会弹出这个警告。实践证明,这个警告并不影响最终的程序执行。只要没有error,warning一般可以忽略。

3.caffe的安装

到这一步是最大的坑了。之前的步骤按照博主的教程,虽然有点差异,但方向都没有问题,自己稍微做一点修正就可以了。但是caffe的编译博主犯了错。

一般我们使用源文件安装的方式都是使用如下步骤的

mkdir build
cd build
cmake ..
make

但是博主对一些文件设置完成直接用make all -j8。我当时也没多想,按照命令往下做。但无论怎么修改都会出现nvcc fatal: Unsupported gpu architecture \'compute_20\'的错误提示。改了3次,才意识到好像还没做cmake。这样才安装成功。

4.后记

在测试的时候发现速度的确很慢,有可能是我的笔记本太渣了,也有可能是显卡驱动和显卡不适配,所以GPU加速没有起作用。不管怎样这都是第一步。现在先用起来,以后对计算有要求了可以加载到云上去,或者买更好的计算资源。