大家好,最近闲的无聊,我的戴尔笔记本(2011年买的,i7-2600M,显卡nvida GT525M)装了ubuntu16.04,突发奇想,应该叫贼心不死吧,因为之前真没用这台笔记本装成过,当然台式机除外了。笔记本的双显卡装cuda,我觉得要靠运气和人品,没错我测试成功了。哈哈……特此博客跟大家分享下,其中有些关键点,我会告诉你如何处理的。当然我这个不是傻瓜教程,毕竟思路和方法才是最关键的。
首先说下我的硬件:
戴尔n5100笔记本:
i7-2600M
nvida gt525M 1G
inter集显
操作系统:ubuntu 16.04 LTS
一、屏蔽 nouveau
创建
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
内容
blacklist nouveau
options nouveau modeset=0
更新一下
sudo update-initramfs -u
重新系统 (要进入文本模式,Ctrl+Alt+F1),看下nouveau 是否被屏蔽,使用命令:
lsmod | grep nouveau
如果没有输出,证明已经成功屏蔽nouveau
二、安装显卡驱动 nvidia 367
直接在文本模式下,安装显卡驱动:
sudo apt-get install nvidia-367
安装完成后,重启下:
sudo reboot
打开 关于这台计算机,出现如下画面,证明安装显卡成功。
三、安装CUDA8.0
进入nvidia官网,下载cuda8.0:https://developer.nvidia.com/cuda-downloads
请安装上图操作,一般不会有问题。
安装过程可能出现:
/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link
解决办法:
两步,更名+重新链接
sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1
sudo ldconfig #立即生效
cuda8.8环境配置,进入~/.bashrc,添加:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后设置环境变量,在命令行输入:
sudo gedit /etc/profile
在打开的文件末尾加入:
export PATH = /usr/local/cuda/bin:$PATH
保存,创建链接文件:
sudo gedit /etc/ld.so.conf.d/cuda.conf
在打开的文件中添加如下的语句:
/usr/local/cuda/lib64
保存,执行:
sudo ldconfig
链接立刻生效
下面测试下CUDA 是否安装成功:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
出现一下信息,证明安装成功CUDA
四、(可选)cudnn安装
首先,说明一下,这个是可选的,因为对于我这个款的gpu 性能太低,所以不能支持cudnn,如果装了cudnn 到时候安装caffe还是需要屏蔽掉,不然make runtest会报错!
cudnn官方网站:https://developer.nvidia.com/rdp/cudnn-download
进去之后,会让登陆,自己注册个账号,然后就可以下载了,这里选用cudnn v5
下载完之后,解压,得到是inclue和lib64文件。
复制文件
sudo cp lib64* /usr/local/cuda/lib64/
sudo cp include/cuda.h /usr/local/cuda/include/
更新软连接
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原先的动态文件
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo lin -s libcudnn.so.5 libcudnn.so
然后,输入以下命令:(这个为什么要加呢?主要是编译caffe是,可能会出现/sbin/ldconfig.real: /usr/local/cuda-8.0/targets/x86_64-Linux/lib/libcudnn.so.5 不是符号连接‘’)
sudo ln -sf /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5.1.5 /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5
立刻生效
sudo ldconfig
这样cudnn 就安装完了!
再强调一遍,这是可选的安装!
五、caffe 安装
终于到了安装caffe ,是不是很激动呢
准备一下,配置依赖包,这是我需要出现配置的情况,你在编译还有其他的依赖,就自己补上。正所谓缺啥补啥!
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev liblmdb-dev
libgflags-dev libgoogle-glog-dev liblmdb-dev
首先去github下载:
git clone https://github.com/weiliu89/caffe.git
生成Makefile.config文件
cp Makefile.config.example Makefile.config
这里不需要cudnn ,打开CMakeLists.txt ,USE_CUDNN 为OFF
打开Makefile.config文件,USE_CUDNN注释掉,加个#
编译,进入caffe的根目录下:
mkdir build
cd build
cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets .. #消除NVCC警告的,正常情况下,cmake ..
make all -j8
make runtest
make pycaffe
好了,到这里caffe 就安装完成了。
-------------------------------------------QAQ--------------------------------------------------------------------
1、进行make runtest,出现 Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) 错误?
这个问题的本质在于,你的GPU 版本过低导致的,你需要查看你的显卡是否支持cudnn。
这里USE_CUDNN=1 注释掉,CMakelists.txt 文件中USE_CUDNN 改成OFF
2、nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ??
cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets ..
3、/home/liang/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54:error: ‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppState, Npp8u* pDeviceMem);解决办法:
在graphcuts.cpp中将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)