硬件配置: CPU : Intel i7 7800
GPU : 技嘉AORUS GTX 1080Ti
系统配置: Ubuntu16.04.2
第一步 Ubuntu系统安装
1、利用UltraISO软件制作 ubuntu 16.04.2 U盘启动项
写入硬盘映像
格式化,然后开始写入,结束点击返回即可
2、F12设置U盘启动
第二步 Nvidia 显卡驱动安装(xxx.run 文件安装)
依赖包优先安装
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
驱动版本 : NVIDIA-Linux-x86_64-384.130.run
驱动下载 : https://pan.baidu.com/s/1GkxfDLnM2PNYOhNGe7d46w 密码:tz5d
(安装包最好放在 /home 目录下)
安装之前,重启电脑进入BIOS设置,找到Security里的Secure Boot选项,选择Disabled,f10保存退出,重启
1. 卸载原有驱动
sudo apt-get purge nvidia*
2.禁用nouveau(集成显卡驱动)
修改权限,打开blacklist.conf文件
sudo chmod 666 /etc/modprobe.d/blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后加入两行命令
blacklist nouveau
options nouveau modeset=0
更新一下,并重启
sudo update-initramfs -u
sudo reboot
重启后确认nouveau是否已经被禁掉
lsmod | grep nouveau
如果什么输出都没有,则表示nouveau已经被禁掉了
3.ctrl+alt+F3(F1)进入命令行模式(输入用户名和密码),关闭图像化环境
暂时关闭x-window服务
sudo service lightdm stop
4安装驱动
sudo chmod a+x NVIDIA-Linux-x86_64-384.130.run //获取权限
sudo ./NVIDIA-Linux-x86_64-384.130.run –no-x-check –no-nouveau-check –no-opengl-files //安装驱动
–no-x-check 安装驱动时关闭X服务
–no-nouveau-check 安装驱动时禁用nouveau
–no-opengl-files 只安装驱动文件,不安装OpenGL文件
在安装驱动的时候,有一句问你”Would you like to run the nvidia-xconfig utility to automatically update your X configuration file…”,选择 No ,其他接受即可。
5.重启图像化界面
sudo service lightdm start
ctrl+alt+F7进入图形界面
查看是否安装成功
nvidia-smi
第三步 CUDA安装
下载链接:https://pan.baidu.com/s/1qOmVesHi78L60tFXFHYdMw 密码:ef8z
下载完安装包放到./home目录下
ctrl+alt+f3(f1)进入命令行模式
暂时关闭x-window服务
sudo service lightdm stop
运行安装
sudo sh cuda_9.0.103_384.59_linux.run --no-opengl-libs
单击回车,一路往下运行,直到提示“是否为NVIDIA安装驱动nvidia-384?”,选择否,因为已经安装好驱动程序了,其他的全都是默认,不过要记住安装位置,默认是安装在/usr/local/cuda文件夹下
配置环境变量
使用 gedit 命令打开配置文件
sudo gedit ~/.bashrc
在该文件最后加入以下两行并保存:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使改配置生效
source ~/.bashrc
2.验证CUDA9.0是否安装成功
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
若看到类似以下信息则说明 cuda 已安装成功:
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GT 740M"
CUDA Driver Version / Runtime Version 9.0 / 9.0
CUDA Capability Major/Minor version number: 3.5
Total amount of global memory: 2004 MBytes (2100953088 bytes)
( 2) Multiprocessors, (192) CUDA Cores/MP: 384 CUDA Cores
GPU Max Clock rate: 1032 MHz (1.03 GHz)
Memory Clock rate: 800 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 524288 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kern Yes with 1 copy engine(s)
Run time limit on kernels: No
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.0, CUDA Runtime Version = 9.0, NumDevs = 1, Device0 = GeForce GT 740M
Result = PASS
然后设置环境变量和动态链接库,在命令行输入:
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
使链接生效
第四步 CUDNN安装
链接:https://pan.baidu.com/s/1ZhzYeENefBPQRTI9vx7_pA 密码:u4g7
下载cudnn-9.0-linux-x64-v7.tgz压缩包,解压到/home目录,得到一个cuda文件夹,该文件夹下include 和 lib64 两个文件夹
1)Ctrl+alt+F1进入命令行界面
2) 进入解压后的cudnn-9.0-linux-x64-v7.0.tgz文件cuda,在终端执行下面的指令安装:
tar -zxvf cudnn-9.0-linux-x64-v7.0.tgz
cd cuda
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
然后更新网络连接:
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.0.3 # 自己查看.so的版本
sudo ln -sf libcudnn.so.7.0.3. libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
重新启动图形化界面
sudo service lightdm start
ctrl+alt+f7返回图形界面
安装完成后输入下面命令验证是否成功
nvcc -V
第五步 Opencv+Opencv_contrib安装
opencv 3.1.0 下载
链接:https://pan.baidu.com/s/1auNkgYxKdh5GBTcLGD9z_w 密码:se5x
opencv_contrib-3.1.0下载
链接:https://pan.baidu.com/s/1PpBmf_vdDub3r4vjN-V3Mw 密码:f9ts
下载结束解压到./home 目录,opencv_contrib-3.1.0可以放到opencv-3.1.0文件夹下
1.依赖项安装
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
2.修改配置文件
sudo gedit /usr/local/opencv310/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp
将代码
if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
替换成
if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)
3.创建build 文件夹并进入
cd opencv-3.1.0/
sudo mkdir build
cd build
4.cmake
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..
注:命令中最后的" .. "(空格+两个点)千万不要忘记。
cmake后可能一直卡在下载ippicv的地方,这是需要自己下载ippicv_linux_20151201.tgz将其放在
/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e文件夹下,替换原来的文件
然后重新运行cmake
错误:opencv nvcc fatal : Unsupported gpu architecture 'compute_20'
原因:cuda9不支持‘compute-20’,需要更改OpenCVDetectCUDA.cmake文件,
将
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "3.0 3.5")
elseif(CUDA_GENERATION STREQUAL "Kepler")
if(${CUDA_VERSION} VERSION_LESS "5.0")
set(__cuda_arch_bin "2.0 2.1")
else()
set(__cuda_arch_bin "3.0 3.5")
替换为
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "3.0 3.5")
elseif(CUDA_GENERATION STREQUAL "Kepler")
if(${CUDA_VERSION} VERSION_LESS "5.0")
set(__cuda_arch_bin "3.0")
else()
set(__cuda_arch_bin "3.0 3.5")
将:
if(${CUDA_VERSION} VERSION_LESS "5.0")
set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")
elseif(${CUDA_VERSION} VERSION_GREATER "6.5")
set(__cuda_arch_bin "2.0 2.1(2.0) 3.0 3.5")
替换为:
if(${CUDA_VERSION} VERSION_LESS "5.0")
set(__cuda_arch_bin "1.1 1.2 1.3 2.0 2.1(2.0) 3.0")
elseif(${CUDA_VERSION} VERSION_GREATER "6.5")
set(__cuda_arch_bin "3.0 3.5")
Makefile.config 中 CUDA_ARCH 设置:
将紫色两行注释掉
# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
CUDA_ARCH := #-gencode arch=compute_20,code=sm_20 \
# -gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
重新cmake
5.编译安装
sudo make -j8
sudo make install
参考链接: https://blog.csdn.net/yhaolpz/article/details/71375762
https://blog.csdn.net/fdqw_sph/article/details/78745375