前言
在中标麒麟系统成功安装英伟达显卡驱动程序后,心血来潮冲昏了冷静的头脑,一个显卡驱动程序根本没有什么大的用处,还是要把CUDA装备好,让OpenCV或者YoloV3能够使用GPU加速进行图像处理才是正确的道路,才能遛到飞起!!!!!!
软硬件配置:Intel i7,英伟达显卡,CUDA10.0,cudnn7.6.5
YOLOV3分别调用CPU和GPU的检测时间对比,测试图像尺寸1024*1024。
CPU用时11s。
GPU用时1.5s,显卡为GT760,算力在2.x,算力更高的显卡可达毫秒级。
你就说香不香~~~~~~~~~~~~~
一、安装CUDA
如果已经安装了显卡驱动,有的系统可以在终端窗口使用nvidia-smi命令显示显卡信息,在此处就可以看到相应的cuda版本,如下图所示。
如果没有安装显卡驱动程序或者终端输入nvidia-smi命令后也没有显示cuda版本的话,此时可以在终端窗口使用uname -a命令查看中标麒麟系统的内核版本,根据该版本的发布时间选择cuda的版本,如下图所示,该版本发布时间在2017年,只要cuda的发布时间晚于系统版本时间2017年,这样安装也是可以成功滴。
在cuda的官网上下载相应的安装程序。
下载地址:CUDA下载地址
现在美滋滋的开始安装(踩坑)CUDA啦!
WARNING:麒麟系统内核版本、gcc版本、cuda版本相互兼容可以少踩一些坑。
1.nouveau驱动禁用
在中标麒麟系统中禁掉系统自带的nouveau显卡驱动,即将nouveau加入黑名单blacklist.conf中,不同的系统blacklist.conf文件在不同的位置(/etc/modprobe.d/blacklist.conf或者/usr/lib/modprobe.d/dist-blacklist.conf)。进入相应的文件,打开终端命令窗口进行修改:
1)输入
sudo vim blacklist.conf或者sudo vim dist-blacklist.conf命令进入文件
2)输入 i 修改文件
加入blacklist nouveau禁用驱动程序
注释#blacklist nvidiafb
3)点击esc退出修改
4)输入 :wq保存文件
2.img文件备份
在boot文件中备份启动时候引导文件,打开终端窗口:
1)备份原始镜像文件:
sudo mv initramfs-$(uname -r).img initramfs-
$(uname -r).img.(随意一个后缀名)
2)重新生成不包含nouveau驱动的镜像文件:
sudo dracut --omit-drivers initramfs-$(uname -r).img $(uname -r)
输入reboot命令重启电脑
3.CUDA安装
电脑重新启动时按e键进入grub界面,在…ro rhgb quiet 后面加入 3(注意空格),设置系统以第三级别方式进行启动(多用户标准模式), 按F10保存并启动。
1)进入系统tty1界面,输入用户名和密码登录。
2)输入lsmod | grep nouveau 命令后没有任何信息显示表示自带显卡驱动程序禁用成功
3)进入存放英伟达显卡安装程序的文件夹,输入
chmod 777 cudaxxx.run命令给予程序运行权限。
输入 sudo ./cudaxxx.run开始安装驱动程序。
4)Ctrl+C直接跳过介绍信息,进入安装程序:
(
a
a
a)警告信息、安装显卡驱动、OpenGL库、运行nvidia-xconfig、安装cuda的例程这些个选项时选择accept和yes。
(
b
b
b)Do you want to install a symbolic link at /usr/local/cuda?建立链接的选项,根据个人喜欢选择是否创建cuda链接。
5)等待安装完成后,输入reboot重启电脑后,进入cuda的例程deviceQueryDry文件中,make编译后,运行程序,如图所示出现Result = PASS,表示cuda成功安装。
6)进入cuda的文件夹/usr/local/cuda-xx(版本号)/bin中,在终端输入nvcc -V命令显示cuda信息,如下图所示,至此cuda安装成功!!!!
7)进入/ect/ld.so.conf.d文件,使用终端命令新建一个cuda.conf文件,加入cuda的引用路径,然后sudo ldconfig更新库引用。
WARNING:
(
a
a
a)双显卡黑屏的问题,将显示器的HDMI连接线从集成显卡的插槽换到独立显卡的插槽即可解决黑屏问题。
(
b
b
b)我的中标麒麟系统已经安装了英伟达显卡驱动程序,在装CUDA时提示系统的磁盘余量不足,直接跳出安装程序,我尝试着把原先的显卡驱动程序卸载了,再安装CUDA,竟然意外的成功了。。。。。。这个坑的原理没搞明白,不过填上了就好。
(
c
c
c)在终端使用nvcc -V命令,系统会提示bash没有这个命令,这是因为系统的可执行文件一般存在/usr/bin和/usr/local/bin文件中,把/usr/local/cuda-xx(版本号)/bin中文件拷贝到/usr/local/bin中,把/usr/local/cuda-xx(版本号)/include中文件拷贝到/usr/local/include中,这样就可以在任意一个终端窗口使用nvcc的命令了。
二、安装CUDNN
在cudnn官网进行注册一个账户,然后下载cudnn库,需要匹配CUDA版本,然后解压cudnn库得头文件和库文件。
下载地址:CUDNN下载地址
安装CUDNN就是将头文件cudnn.h文件拷贝到/usr/local/include/和/usr/local/cuda-xx(版本号)/include/中,然后将库文件中所有文件拷贝到/usr/local/cuda-xx(版本号)/lib64/中即可。
输入命令:
1)sudo cp -rf xx…/include/cudnn.h /usr/local/include/
2)sudo cp -rf xx…/include/cudnn.h /usr/local/cuda-xx(版本号)/include/
3)sudo cp -rf xx…/lib64/* /usr/local/cuda-xx(版本号)/lib64/
4)sudo ldconfig更新库引用
总结
遇见问题不要慌,问题总会解决的嘛!!!!