您的位置:首页 > Web前端

[置顶] 戴尔笔记本双显卡配置nvidia367+cuda8.0+caffe(通用版)

2017-05-10 10:44 645 查看
大家好,最近闲的无聊,我的戴尔笔记本(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[/code] 
生成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)



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐