Ubuntu 16.04 LTS + CUDA8.0 + cudnn6.0

2024-06-05 13:48

本文主要是介绍Ubuntu 16.04 LTS + CUDA8.0 + cudnn6.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 简介
    • GPU对比
    • GPU浮点计算能力换算
  • 安装
    • 下载
    • 准备
    • 安装CUDA
      • 禁用 Nouveau 驱动
      • 进入文本模式
      • 执行安装
      • 添加环境变量
      • 加载新的环境变量
      • 查看CUDA设备
    • 安装CUDNN
  • CUDA使用
    • CUDA版本切换
  • 问题与解决
    • 循环进登录界面
    • you appear to be running an x server please exit x before installing
    • The driver installation is unable to locate the kernel
    • NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.

简介

本文记录本人安装CUDA的方法及过程中,以及出现的一些问题及解决办法。本人习惯于参考官方手册,这里主要参考 NVIDIA CUDA 官方手册 进行安装,其中包含了CUDA开发的几乎所有文档手册,如何在 Linux 系统上的安装CUDA参见: CUDA Linux Inatallation。

通过阅读上述手册可知,Linux系统上CUDA的安装方式有两种:包管理器方式(.deb 文件) 和 RUN file安装( .run 文件)。本文选择 run 格式安装,关于 deb 的安装请参考上述官方手册,或者本人另一篇博客 NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0),不过有点老了。

**参考手册: **

  • NVIDIA CUDA 官方手册
  • CUDA Linux Inatallation

软件环境:Ubuntu 16.04LTS
硬件环境:1080TI

您还可以参照企鹅饿饿饿的 Ububtu16.04+GTX1070深度学习小钢炮 这篇文章 ,

GPU对比

  • RTX 3090 Benchmarks for Deep Learning – NVIDIA RTX 3090 vs 2080 Ti vs TITAN RTX vs RTX 6000/8000

GPU浮点计算能力换算

参考

  • Nvidia GPU的浮点计算能力(FP64/FP32/FP16)

理论峰值 = GPU芯片数量*GPU Boost主频*核心数量*单个时钟周期内能处理的浮点计算次数

只不过在GPU里单精度和双精度的浮点计算能力需要分开计算,以最新的Tesla P100为例:

双精度理论峰值 = FP64 Cores * GPU Boost Clock * 2 = 1792 *1.48GHz*2 = 5.3 TFlops

单精度理论峰值 = FP32 cores * GPU Boost Clock * 2 = 3584 * 1.58GHz * 2 = 10.6 TFlops


安装

安装前请先参考 注意事项 部分…

下载

先给出下载链接:

  • CUDA
  • CUDNN

从 这里 选择操作系统并下载 run 格式的 CUDA开发套件,以及显卡驱动文件(一个文件,如:cuda_8.0.61_375.26_linux.run),如下图所示:

选择文件并下载CUDA

从 这里下载CUDNN,如 cudnn-8.0-linux-x64-v6.0.tgz,并解压得到 cudnn-8.0-linux-x64-v6.0 文件夹,里面仅包含一个 cuda 文件夹。

准备

参考这里 确认你的PC机上装有NVIDIA CUDA可计算显卡、支持的Linux版本系统、GCC等等。如果已确认,可飞过。

安装CUDA

禁用 Nouveau 驱动

执行 lsmod | grep nouveau 命令,无论输出什么,都说明nouveau驱动已加载,Ubuntu系统中,通过如下步骤禁用nouveau驱动。

  1. 创建 /etc/modprobe.d/blacklist-nouveau.conf 文件,输入如下内容并保存:
blacklist nouveau
options nouveau modeset=0
  1. 重新生成kernel initrd
    终端执行: sudo update-initramfs -u

提示成功后,往下看…

进入文本模式

  1. 进入文本模式:快捷键 Ctrl + Alt + F1 ,输入用户名密码登录系统。再次确保 nouveau 驱动没有被加载 (命令:lsmod | grep nouveau 什么也不输出代表已禁用)。

  2. 关闭X server服务: sudo service lightdm stop

执行安装

终端进入你下载的 run格式CUDA开发套件所在文件夹,执行该文件进行安装,命令示例如下,注意你的版本:

sudo sh cuda_<version>_linux.run
如:
sudo sh cuda_8.0.61_375.26_linux.run

在弹出的文本模式交互页面,按 Q 键退出文档查看,并根据提示输入 accept 接受协议。

之后根据自己需要,按提示设置,如安装路径等等。一般默认即可,但 注意: 安装过程中,不要选择OpenGL,否则会出现,循环进入登录界面 ,本人选择安装 CUDA Samples(建议安装,待会会借助它查看是否安装成功,及显卡信息),并安装在 Documents 文件夹下。

等待安装完成即可…

添加环境变量

注意:此环境变量为64位系统下的,32位的把lib64改成lib即可。

  • 方式1,仅修改用户变量
# setting the environment variables so CUDA will be foundecho "\nexport PATH=/usr/local/cuda-8.0/bin:$PATH" >> ~/.bashrc
echo "\nexport LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
  • 方式2,修改所有用户变量

先使用sudo gedit /etc/profile打开“profile”文件,或者 sudo gedit ~/.bashrc 打开“./bashrc”文件,然后在打开的文件的末尾添加如下代码并保存:

# setting the environment variables so CUDA will be found
# After open profile, Add follow code at the end of file
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

加载新的环境变量

添加好环境变量后,需要加载新的环境变量,才能应用于系统。

加载更新环境变量 source ~/.bashrc(方式1),source /etc/profilesource ~/.bashrc(方式2)。或者重新打开终端,或者干脆重启系统 .

**注:**如果你没有重启系统,还需要重启 X server 服务:sudo service lightdm start 进入图形界面。

现在,你可以关机,并取下亮机卡.

查看CUDA设备

终端进入你的 CUDA Samples安装目录,执行编译后运行 ./deviceQuery 输出显卡设备等信息。

cd NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery
make
./deviceQuery

若提示如下信息,说明NVIDIA显示驱动有问题, 使用 sudo apt --purge remove nvidia* 卸载, 重新安装时选择安装NVIDIA drivers。

./deviceQuery
./deviceQuery Starting...CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 30
-> unknown error
Result = FAIL

输出的信息 , 成功看到类似信息代表驱动及开发套件安装成功,下面安装CUDNN:

CUDA Device Query (Runtime API) version (CUDART static linking)Detected 2 CUDA Capable device(s)Device 0: "GeForce GTX 1080 Ti"CUDA Driver Version / Runtime Version          8.0 / 8.0CUDA Capability Major/Minor version number:    6.1Total amount of global memory:                 11172 MBytes (11715084288 bytes)(28) Multiprocessors, (128) CUDA Cores/MP:     3584 CUDA CoresGPU Max Clock rate:                            1582 MHz (1.58 GHz)Memory Clock rate:                             5505 MhzMemory Bus Width:                              352-bitL2 Cache Size:                                 2883584 bytesMaximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layersMaximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layersTotal amount of constant memory:               65536 bytesTotal amount of shared memory per block:       49152 bytesTotal number of registers available per block: 65536Warp size:                                     32Maximum number of threads per multiprocessor:  2048Maximum number of threads per block:           1024Max 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 bytesTexture alignment:                             512 bytesConcurrent copy and kernel execution:          Yes with 2 copy engine(s)Run time limit on kernels:                     NoIntegrated GPU sharing Host Memory:            NoSupport host page-locked memory mapping:       YesAlignment requirement for Surfaces:            YesDevice has ECC support:                        DisabledDevice supports Unified Addressing (UVA):      YesDevice PCI Domain ID / Bus ID / location ID:   0 / 3 / 0Compute Mode:< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >Device 1: "GeForce GTX 1080"CUDA Driver Version / Runtime Version          8.0 / 8.0CUDA Capability Major/Minor version number:    6.1Total amount of global memory:                 8111 MBytes (8504868864 bytes)(20) Multiprocessors, (128) CUDA Cores/MP:     2560 CUDA CoresGPU Max Clock rate:                            1734 MHz (1.73 GHz)Memory Clock rate:                             5005 MhzMemory Bus Width:                              256-bitL2 Cache Size:                                 2097152 bytesMaximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layersMaximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layersTotal amount of constant memory:               65536 bytesTotal amount of shared memory per block:       49152 bytesTotal number of registers available per block: 65536Warp size:                                     32Maximum number of threads per multiprocessor:  2048Maximum number of threads per block:           1024Max 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 bytesTexture alignment:                             512 bytesConcurrent copy and kernel execution:          Yes with 2 copy engine(s)Run time limit on kernels:                     YesIntegrated GPU sharing Host Memory:            NoSupport host page-locked memory mapping:       YesAlignment requirement for Surfaces:            YesDevice has ECC support:                        DisabledDevice supports Unified Addressing (UVA):      YesDevice PCI Domain ID / Bus ID / location ID:   0 / 1 / 0Compute Mode:< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
> Peer access from GeForce GTX 1080 Ti (GPU0) -> GeForce GTX 1080 (GPU1) : No
> Peer access from GeForce GTX 1080 (GPU1) -> GeForce GTX 1080 Ti (GPU0) : NodeviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 8.0, NumDevs = 2, Device0 = GeForce GTX 1080 Ti, Device1 = GeForce GTX 1080

安装CUDNN

CUDNN是NVIDIA公司针对深度神经网络,开发的基于CUDA的计算库,用于加速计算,这里安装版本为6.0,目前最新为7.0,但安装方式不变,且十分简单。可参考 官方步骤

1.解压:进入“cudnn-8.0-linux-x64-v6.0.tgz”所在目录,将文件解压,如下:

#注意修改成你的目录
cd /home/liu/sfw
#解压
tar zxvf  cudnn-8.0-linux-x64-v6.0.tgz

2.copy文件至CUDA安装目录:解压后,在你的目录下生成一个“cuda”文件夹,对于cuDNN6.0的版本解压后生成“cudnn-8.0-linux-x64-v6.0”文件。使用如下命令copy,注意第二个有个-a参数,否则,拷贝过去的文件失去了链接。

$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

cuDNN安装完成。~-~

CUDA使用

CUDA版本切换

请移步本人博客: 计算机使用技巧-CUDA切换

问题与解决

循环进登录界面

有些童鞋安装好CUDA重启后会发现:电脑不断地在登录界面循环,这是由于安装时选择安装了 OpenGL ,参考这里,安装时按照上述步骤, 不选择安装OpenGL即可以前使用压缩命令压缩备份系统后再恢复,也会出现该现象,后来重装了系统。

you appear to be running an x server please exit x before installing

X 服务没有完全关闭.

sudo /etc/init.d/lightdm stop
cd /tmp
sudo rm -rf .X*

The driver installation is unable to locate the kernel

如果更新了内核, 会进不了桌面, 重装CUDA驱动又会提示 The driver installation is unable to locate the kernel , 这是由于 Ubuntu 内核版本与CUDA要求的版本不一致, CUDA9的官方文档要求的Linux版本为4.4.0 可参见CUDA手册.

  • 已安装内核版本查看: uname -r
  • 查看可以安装的内核: apt-cache search linux|grep linux-image
  • 选择一个内核版本并安装: sudo apt-get install linux-image-X.X.X.XX-generic linux-headers-X.X.X.XX-generic
  • 更新grub引导: sudo update-grup
  • 重启系统, 高级选项中选择新安装的内核版本系统, 也可以修改grub配置, 默认进入某个版本的系统: sudo gedit /etc/boot/grub/grub.cfg

如果上述查看的版本中含 4.4, 则可以通过, 开机进入grub高级菜单, 选择4.4版本内核的系统启动; 如果不存在, 可以通过上述步骤降低内核版本, 当然也可以安装CUDA10.

如果是安装cuda时出现上述错误,执行sudo apt-get --purge remove nvidia* 删除之前安装的驱动,再重新用 run包安装。

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.

使用 sudo apt --purge remove nvidia* 卸载驱动, 然后重装NVIDIA驱动, 如 NVIDIA-Linux-x86_64-430.50.run

参考

这篇关于Ubuntu 16.04 LTS + CUDA8.0 + cudnn6.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1033230

相关文章

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众