确保cuda能安装成功,查阅NVIDIA CUDA Installation Guide for Linux确认安装前的环境是否符合要求
环境:
操作系统: Ubuntu 16.04
GCC/G++:5.3.0
OpenCV: 2.4.11和3.1.0
Matlab :R2014b(a)
Python: 2.7
1.使用过几个源,相对较快且稳定推荐清华大学源
终端输入
cd /etc/apt/
sudo cp sources.list sources.list.backup #做备份
sudo gedit sources.list
2.替换文件:
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
3.更新源和更新已安装的包:
sudo apt-get update
sudo apt-get upgrade
如果使用
apt-get update
出现
E: 无法获得锁 /var/lib/apt/lists/lock - open (11:
资源暂时不可用)
E: 无法对目录 /var/lib/apt/lists/ 加锁
这是因为包的依赖关系形成了死锁使用以下命令解决
sudo rm /var/lib/apt/lists/lock
Ubuntu16.04 集成了GCC 5.4.0, cuda8(8.0.61版本)最新版支持5.4的gcc。
但是很多软件不支持这么高版本的GCC,根据自己的需求降级进行安装
1.下载gcc源码
wget ftp://mirrors.kernel.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.gz
网络问题上面的命令可能不能成功下载gcc,则可以手动下载该版本的 gcc-5.3.0
2.进行解压
tar -zxvf gcc-5.3.0.tar.gz
3.下载编译所需依赖项:
cd gcc-5.3.0 //进入解包后的gcc文件夹
./contrib/download_prerequisites //下载依赖项
cd .. //返回上层目录
4.建立编译输出目录:
mkdir gcc-build-5.3.0
5.进入输出目录,执行以下命令,并生成makefile文件:
cd gcc-build-5.3.0
../gcc-5.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
6.编译:
sudo make -j2
-j2 中的2是使用的cpu核心数, 能加快编译速度,根据自己的电脑配置。
7.编译结束以后,执行安装:
sudo make install
8.检查gcc和g++版本
gcc --version
g++ --version
根据本机显卡类型在Nvidia显卡驱动下载官网查看适合自己显卡的驱动并下载
1、在你的用户登录界面按ctrl+alt+F1进入文本模式
2、输入你的账户名和密码
3、依次运行如下语句:
sudo apt-get purge nvidia-* //删除现有驱动
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-375 //nvidia-后面的数字是版本号
sudo reboot //重启
4.重启后,终端输入命令查看驱动版本详细信息:
nvidia-smi //或者
nvidia-settings
请先查看Nvidia驱动版本nvidia-smi
,寻找适合的cuda版本安装
CUDA的安装包中包含有 nvidia 显卡驱动,所以CUDA 的安装包括了 nvidia 显卡驱动的安装
1.为了方便开始安装过程的路径查找,建议把下载的 CUDA 安装文件移动到 HOME 路径下
2.通过 Ctrl + Alt + F1 进入文本模式,输入帐号密码登录
3.在文本模式登录后首先关闭桌面服务:
sudo service lightdm stop
4.通过 Ctrl + Alt + F7 发现已无法成功返回图形化模式,说明桌面服务已成功关闭。注意:必须确保桌面服务已关闭,这对接下来的 nvidia 驱动安装非常重要
5.Ctrl + Alt + F1 进入tty模式 ,然后运行 CUDA 安装文件进行安装,之前把 CUDA 安装文件移动至 HOME,直接通过 sh 命令运行安装文件即可:
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
6.启动安装程序。先输入 accept同意协议
7.选择是否安装 nvidia 驱动,CUDA中集成的Nvidia驱动的版本较低,不建议安装。
建议单独安装Nvidia显卡驱动
8.确认安装或确认默认路径安装,安装完成后输入重启命令重启:
reboot
9.重启后,配置 CUDA 环境变量。使用 gedit 命令打开配置文件:
sudo gedit ~/.bashrc
10.在该文件最后加入以下两行并保存:
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-8.0/bin:$PATH
11.使配置生效:
source ~/.bashrc
1.执行以下命令:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
2.如下deviceQuery启动,说明 cuda 已安装成功:
.
/deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 750"
CUDA Driver Version / Runtime Version 9.0 / 8.0
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 977 MBytes (1024131072 bytes)
( 4) Multiprocessors, (128) CUDA Cores/MP: 512 CUDA Cores
GPU Max Clock rate: 1110 MHz (1.11 GHz)
Memory Clock rate: 2505 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 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 kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
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 = 8.0, NumDevs = 1, Device0 = GeForce GTX 750
Result = PASS
CUDA 8.0 +对应 cuDNN 7.0 +,所以一定要选择适合的版本
1.登录英伟达开发者官网,下载对应 cuda 版本且 linux 系统的 cudnn 压缩包
下载完成后解压
tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
2.cudn 文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下
cd cuda/include/
3.命令行进入 cudn/lib64 路径下,运行以下命令:
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
cd ../lib64 #打开lib64目录
sudo cp lib* /usr/local/cuda/lib64/ #复制库文件
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* #给所有用户增加这些文件的读权限
4.建立软连接,在终端输入
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.3 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
5.设置环境变量,终端输入
sudo gedit /etc/profile
在代码末尾加入
PATH=/usr/local/cuda/bin:$PATH export PATH
6.保存后,创建链接文件
6.1 安装vim
sudo apt-get install vim-gtk
6.2 使用vim配置环境变量
sudo vim /etc/ld.so.conf.d/cuda.conf
6.3 按a进入插入模式,增加下面一行
/usr/local/cuda/lib64
6.4 按esc退出插入模式,按:wq保存退出
6.5 对vim更多个性配置参考
https://blog.csdn.net/zht741322694/article/details/78959338
7.不过鉴于vim操作对新手不是很友好也可以使用gedit修改
sudo gedit /etc/ld.so.conf.d/cuda.conf
8.终端输入命令是链接生效
sudo ldconfig #使链接生效
9.c切换到CUDA 8.0 Samples默认安装路径
cd NVIDIA_CUDA-8.0_Samples/
sudo make all -j2 #根据核心改变
cd bin/x86_64/linux/release
./deviceQuery