Ubuntu18.04下NVIDIA CUDA安装指南和DeepLearning4J GPU配置

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

NVIDIA CUDA Installation Guide for Linux

1.1 介绍

CUDA是由NVIDIA研发的并行计算平台和编程模型,它通过利用图形处理单元(GPU)的强大功能显著提高了计算性能。
GPU在开发时考虑了以下几个目标:

  • 为标准编程语言(如C语言)提供一小组扩展,支持直接实现并行算法。使用CUDAC/c++,编程人员可以专注于算法的并行化,而不是把时间花在算法的实现上。

  • 支持应用程序同时使用CPU和GPU的异构计算,应用程序的串行部分运行在CPU上,并行部分运行在GPU上。同样的,CUDA可以增量地应用于现有的应用程序。CPU和GPU被视为拥有各自内存空间的独立设备,这种配置还允许在CPU和GPU上同时进行计算,而不会争用内存资源。

支持CUDA的GPU有数百个内核,它们可以共同运行数千个计算线程。这些内核共享资源,包括寄存器文件和共享内存。片上共享内存允许在这些内核上运行的并行任务共享数据,而无需通过系统内存总线发送数据。
本指南将引导如何安装和检查CUDA开发工具的正确操作。

1.1.1 系统需求

要在你的系统上使用CUDA,你需要安装以下软件:

CUDA开发环境依赖于与主机开发环境的紧密集成,包括主机编译器和C运行时库,因此只支持这个CUDA工具包版本的发行版。

表1 CUDA 10.1支持的本地Linux发行版

在这里插入图片描述

(*)对于红帽(Red Hat)企业级Linux支持的特别内核版本,访问https://access.redhat.com/articles/3078。有关内核版本列表,包括SUSE Linux 企业服务器的发布日期,请访问https://wiki.microfocus.com/index.php/SUSE/SLES/Kernel_versions

(**)对于x86-64的Ubuntu长期支持版本(LTS),CUDA 10.1均支持硬件(HWE)内核(如用于16.04.4的4.13.x)和服务器LTS内核(如用于16.04的4.4.x)。更多信息请访问https://wiki.ubuntu.com/Kernel/Support

(***)在POWER8处理器上,只有Tesla GP100 GPU支持CUDA 10.1。

(****)在POWER9处理器上,只有Tesla GV100 GPU支持CUDA 10.1。

表2 CUDA工具包与兼容的驱动版本

在这里插入图片描述
通过表2查看CUDA与驱动版本的兼容情况,由于我使用的是Linux x86_64位的系统,并且已经安装的

1.1.2 文档说明

本文档面向熟悉Linux环境和从命令行编译C程序的读者。您不需要具备以前使用过CUDA或并行计算的经验。注意:本指南只涉及安装了XWindows系统上的安装。

注意:本文档中的许多命令可能需要超级用户权限。在大多数Linux发行版中,这将要求以root身份登录。对于已经启用了sudo包的系统,所有必要的命令都要使用sudo前缀。

1.2 预装操作

在Linux上安装CUDA工具包和驱动程序,需要进行以下准备:

  • 验证系统是否有CUDA支持的GPU。
  • 验证系统是否正在运行受支持的Linux版本。
  • 验证系统是否安装了gcc。
  • 验证系统是否安装了正确的内核头文件和开发包。
  • 下载NVIDIA CUDA工具包。
  • 处理冲突的安装方法。

注意:可以通过运行带有-override标志的安装程序来覆盖安装时先决条件检查。请记住,使用NVIDIA CUDA工具包仍然需要满足先决条件。

1.2.1 验证是否有CUDA支持的GPU

为了验证是否有CUDA支持的GPU,可以在系统属性中查看,或者在命令行中输入以下代码:

$ lspci | grep -i nvidia

如果执行上述代码后没有看到任何设置,那么就在命令行通过输入update-pciids(通常在/sbin)更新Linux维护的PCI硬件数据库,然后返回执行lspci命令。

如果图形显卡是NVIDIA并且列在https://developer.nvidia.com/cuda-gpus中,那就是说明GPU是支持CUDA的。

在这里插入图片描述
在这里插入图片描述

1.2.2 验证Linux版本是否支持

CUDA开发工具仅支持Linux部分特定版本,在CUDA工具箱版本说明中已列出。

为确定正在运行的是哪个版本和发行号,可以在命令行如下以下命令:

$ uname -m && cat /etc/*release

在这里插入图片描述
可以看到,我的Ubuntu是64位的,版本是Ubuntu 18.04.3 LTS。

1.2.3 验证系统是否安装了gcc

使用CUDA工具包进行开发时需要gcc编译器,但在运行CUDA应用程序时并不需要gcc。通常情况下Linux已经默认安装了gcc,并且基本上在Linux的支持版本上安装的gcc都可以正常工作。

为了验证系统中安装的gcc版本,可以在命令行输入:

$  gcc --version

在这里插入图片描述
如果有报错,那么就需要从Linux版本中安装开发工具,或者从网页获取一个版本的gcc及其配套工具链。

验证系统是否安装了正确的内核头文件和开发包

CUDA驱动需要在驱动安装和重新编译时,安装用于内核运行版本的内核头文件和开发包。例如,系统正在运行3.17.4-301版本的内核,那么也需要安装3.17.4-301版本的内核头文件和开发包。

在这里插入图片描述

1.2.4 验证系统是否安装了正确的内核头文件和开发包

CUDA驱动需要在驱动安装和重新编译时,安装用于内核运行版本的内核头文件和开发包。例如,系统正在运行3.17.4-301版本的内核,那么也需要安装3.17.4-301版本的内核头文件及其配套工具链。

虽然Runfile安装不执行包验证,但是如果当前没有安装内核头文件和开发包,则驱动程序的RPM和Deb安装将尝试安装。但是,它将安装这些包的最新版本,可能匹配也可能不匹配系统使用的内核版本。因此,最好在安装CUDA驱动程序之前,以及在更改内核版本之前,手动确保安装了正确版本的内核头文件和开发包。

系统正在运行的内核版本可以通过以下命令找到:

$ uname -r

在这里插入图片描述

这是在安装CUDA驱动程序之前必须安装的内核头文件和开发包的版本。下面将多次使用此命令来指定要安装的包的版本。注意以下是内核使用的常见场景。更高级的情况,例如自定义内核分支,应该确保它们的内核头和源代码与它们正在运行的内核构建相匹配。

注意:如果执行的系统更新更改了正在使用的linux内核的版本,请确保重新运行以下命令,以确保安装了正确的内核头文件和内核开发包。否则,CUDA驱动程序将无法使用新内核。

1.2.4.1 RHEL/CentOS

内核头文件和当前运行的内核的开发包可以通过以下安装:

$ sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

1.2.4.2 Fedora

内核头文件和当前运行的内核的开发包可以通过以下安装:

$ sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

1.2.4.3 OpenSUSE/SLES

使用uname命令的输出来确定运行的内核的版本和变体:

$ uname -r

3.16.6-2-default

在本例中,版本是3.16.6-2,而变体是默认的。然后,可以使用以下命令安装内核头文件和开发包,用之前uname命令中发现的变量和版本替换和:

$ sudo zypper install kernel-<variant>-devel=<version>

1.2.4.4 Ubuntu

内核头文件和当前运行的内核的开发包可以通过以下安装:

$ sudo apt-get install linux-headers-$(uname -r)

在这里插入图片描述

1.2.5 选择安装方法

可以使用两种不同的安装机制之一来安装CUDA工具包:特定于发行版的包(RPM和Deb包),或者独立于发行版的包(运行文件包)。与发行版无关的包具有在更广泛的Linux发行版之间工作的优势,但不会更新发行版的本地包管理系统。特定于发行版的包与发行版的本地包管理系统接口。如果可能,建议使用特定于发行版的包。

注意:除了x86_64版本之外,没有为其他架构提供独立的安装程序。对于本地和交叉开发,必须使用特定于发行版的安装程序安装工具箱。有关更多细节,请参阅CUDA跨平台安装部分(CUDA Cross-Platform Installation)。

1.2.6 下载NVIDIA CUDA工具包

NVIDIA CUDA工具包可在http://developer.nvidia.com/cuda-downloads下载。

选择正在使用的平台并下载NVIDIA CUDA工具包。

在这里插入图片描述
只要按照上面的安装基本没问题,自己装的时候报错,重新卸载了CUDA之后再重新安装就OK了。

CUDA Toolkit包含创建、构建和运行CUDA应用程序所需的CUDA驱动程序和工具,以及库、头文件、CUDA示例源代码和其他资源。

下载验证

可以通过将发布在http://developer.nvidia.com/cuda-downloads/checksum上的MD5校验和与下载文件的校验和进行比较来验证下载。如果两者的校验和不同,则说明下载的文件已损坏,需要重新下载。
要计算下载文件的MD5校验和,请运行以下:

$ md5sum <file>

1.2.7 处理冲突的安装方法

在安装CUDA之前,应该卸载之前可能发生冲突的所有安装。这不会对之前没有安装过CUDA的系统,或者安装方法被保留的系统(RPM/Deb vs. Runfile)造成影响。具体请看下表。

表3 CUDA工具包安装兼容矩阵

在这里插入图片描述

表4 NVIDIA驱动安装兼容矩阵

在这里插入图片描述
使用以下命令卸载工具箱运行文件安装:

$ sudo /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl

使用以下命令卸载驱动程序运行文件安装:

$ sudo /usr/bin/nvidia-uninstall

使用以下命令卸载RPM/Deb安装:

$ sudo yum remove <package_name>                      # Redhat/CentOS
$ sudo dnf remove <package_name>                      # Fedora
$ sudo zypper remove <package_name>                   # OpenSUSE/SLES
$ sudo apt-get --purge remove <package_name>          # Ubuntu

1.3 包管理安装

基本说明可以在快速入门指南中找到,更详细的说明请继续阅读。

1.3.1 概述

包管理器安装与系统的包管理系统通过接口调用。当使用RPM或Deb时,下载的包是一个仓库包。这样的包只通知包管理器在何处找到实际的安装包,而不会安装它们。

如果这些包在在线仓库中可用,它们将在稍后的步骤中自动下载。否则,仓库包还会安装一个本地仓库,其中包含系统上的安装包。无论仓库是在线可用的还是本地安装的,安装过程都是相同的,都由几个步骤组成。

对于以下版本,点击链接查看安装CUDA的详细过程:

最后详细描述了一些有用的包管理功能。

这些说明仅用于本地开发。关于跨平台开发,请参阅CUDA跨平台环境部分。

注意:CUDA 9.1中已经不支持“CUDA -core”包,请使用“cuda-compiler”代替。

由于我用的Ubuntu系统,所有只介绍Ubuntu下的安装过程。

1.3.2 Ubuntu

  1. 首先执行预装操作。
  2. 安装仓库meta-data
$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb

distro:发行号,version:版本,architecture:架构。
(如:$ sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb)

  1. 安装CUDA公共GPG密钥

当使用本地仓库安装时:

$ sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub

(如:$ sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub)

当在Ubuntu18.04/18.10上使用网络仓库安装时:

$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<architecture>/7fa2af80.pub

(如:$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

当在Ubuntu16.04上使用网络仓库安装时:

$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/<distro>/<architecture>/7fa2af80.pub

(如: $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

  1. 更新apt仓库缓存
$ sudo apt-get update
  1. 安装CUDA
$ sudo apt-get install cuda
  1. 执行安装后处理操作。

1.3.3 包管理器附加功能

下面是用户可以利用的包管理器的一些附加功能。

1.3.3.1 可用包

推荐的安装包是cuda包。这个包将安装本地开发所需的所有其他CUDA包,并将涵盖大多数场景。

cuda包安装所有可用的本地开发包,如包括以下内容:

  • 编译器、调试器、分析器和数学库。
  • NVIDIA驱动程序包。
  • 对于x86_64平台:NSight Eclipse Edition和Visual Profiler。

编译器、调试器、分析器和数学库。NVIDIA驱动程序包。用于x86_64模板:NSight Eclipse Edition和Visual Profiler。

对于支持的平台上进行跨平台开发,可以采用以下方法:

  • cuda-cross-aarch64包将跨平台开发所需的所有包安装到ARMv8。
  • 类似地,cuda-cross-qnx包将跨平台开发所需的所有包安装到QNX架构。
  • 还安装了目标架构的显示驱动程序包的库和头文件,以支持驱动应用程序的交叉编译。
  • cuda-cross-包不会安装本地显示驱动程序。

上面的跨平台开发包所安装的包也可以通过显式地指定它们的名称来单独安装。可用包列表可通过以下获得:

$ yum --disablerepo="*" --enablerepo="cuda*" list available    # RedHat
$ dnf --disablerepo="*" --enablerepo="cuda*" list available    # Fedora
$ zypper packages -r cuda                                      # OpenSUSE & SLES
$ cat /var/lib/apt/lists/*cuda*Packages | grep "Package:"      # Ubuntu

1.3.3.2 升级包

cuda包指向cuda工具包的最新稳定版本。当有新版本可用时,使用以下命令升级工具包和驱动程序:

$ sudo yum install cuda                                        # RedHat
$ sudo dnf install cuda                                        # Fedora
$ sudo zypper install cuda                                     # OpenSUSE & SLES
$ sudo apt-get install cuda                                    # Ubuntu

cuda-cross-包也可以用同样的方式升级。

CUDA-drivers包指向CUDA仓库中可用的最新驱动程序版本。当有新版本可用时,使用以下命令升级驱动程序:

$ sudo yum install nvidia-driver-latest-dkms                   # RedHat
$ sudo dnf install cuda-drivers                                # Fedora
$ sudo zypper install cuda-drivers \
                      nvidia-gfxG04-kmp-default                # OpenSUSE & SLES
$ sudo apt-get install cuda-drivers                            # Ubuntu

一些桌面环境,如GNOME或KDE,在新包可用时将有通知提示。

为避免任何自动升级,并将工具包安装锁定到X.Y发行版,安装cuda-X-Y或cuda-cross-- x -Y包。
支持并行安装。例如,为了同时安装X.Y CUDA工具包和X.Y+1 CUDA工具包,可以安装CUDA – X.Y和cuda-X.Y + 1包。

1.3.3.3 元包(Meta Packages)

元包是是不包含(或很少)文件,但是有多个依赖项的RPM/Deb包。当你可能不知道你想要的包的细节时,可以用其来安装许多CUDA包,下面是元包列表。

表5 CUDA10.1可用的元包

在这里插入图片描述

1.4 运行文件安装

1.4.1 概述

运行文件安装通过一个交互式的基于窗口菜单的接口安装NVIDIA驱动程序、CUDA工具包和CUDA示例。

下面列出了安装步骤,还给出了禁用Nouveau驱动程序的特定于发行版的说明,以及验证设备节点创建的步骤。

最后,安装程序的高级选项和卸载步骤将在下面详细介绍。

Runfile安装不支持跨平台开发。关于跨平台开发,请参阅CUDA跨平台环境部分。

1.4.2 安装

  1. 执行预装操作。
  2. 禁用Nouveau驱动。
  3. 重新启动到文本模式(runlevel 3)。

这通常可以通过在系统内核启动参数的末尾添加数字“3”来实现。

由于NVIDIA驱动程序尚未安装,文本终端可能无法正确显示。在系统的内核启动参数中临时添加“nomodeset”可以修复这个问题。

有关如何更改上述引导参数的信息,请参阅系统的引导加载程序文档。

需要重新启动才能完全卸载新驱动程序并防止图形界面加载。CUDA驱动程序不能在新驱动程序加载或图形界面激活时安装。

  1. 验证新驱动程序没有加载。如果Nouveau驱动程序仍然被加载,请参考发行版文档,看看是否需要进一步的步骤来禁用Nouveau。
  2. 运行安装程序,并按照屏幕提示操作:
$ sudo sh cuda_<version>_linux.run

(如:$ sudo sh cuda_10.2.89_440.33.01_linux.run

要浏览基于ncurses的安装程序UI,请参阅安装程序UI。

从CUDA 10.1开始,一些库将安装在系统标准位置,而不是工具包安装目录中。根据您的发行版,这些安装位置可以是:/usr/lib/x84_64-linux-gnu,或者/usr/lib64,或者/usr/lib。有关如何更改此位置,请参阅高级选项。

工具箱和示例的默认安装位置是:

在这里插入图片描述
/usr/local/cuda符号链接指向安装CUDA工具包的位置。该链接允许项目使用最新的CUDA工具包,而无需任何配置文件更新。

安装程序必须具有足够的权限来执行某些操作。当当前特权不足以执行操作时,安装程序将请求用户密码,以便尝试使用root特权安装。导致安装程序试图以root权限安装的操作有:

  • 安装CUDA驱动程序
  • 将CUDA工具包安装到用户没有权限写入的位置
  • 将CUDA示例安装到用户没有权限写入的位置
  • 创建/usr/local/cuda符号链接

如上所示,使用sudo运行安装程序将允许安装到需要root权限的目录。使用sudo运行安装程序时创建的目录和文件将具有root所有权。

如果安装驱动程序,安装程序还会询问是否应该安装openGL库。如果用于显示的GPU不是NVIDIA GPU,则不应安装NVIDIA openGL库,不然的话,非NVIDIA GPU的图形驱动程序所使用的openGL库将被覆盖,GUI将无法工作。如果执行静默安装,应该使用——no-opengl-libs选项来阻止安装openGL库。有关详细信息,请参阅高级选项部分。

如果用于显示的GPU是NVIDIA GPU,则可能需要修改X服务器配置文件,/etc/ x11 /xorg.conf。在某些情况下,nvidia-xconfig可用于自动生成适用于系统的xorg.conf文件。对于非标准系统,比如那些有多个GPU的系统,建议手动编辑xorg.conf文件。有关更多信息,请参阅xorg.conf文档。

注意:安装Mesa可能会覆盖/usr/lib/ libgls,这是之前由NVIDIA驱动程序安装的,所以在安装这些库之后可能需要重新安装NVIDIA驱动程序。

  • 重新启动系统以重新加载图形界面。
  • 验证设备节点已正确创建。
  • 执行安装后操作。

1.4.3 安装UI

安装界面有三种主要状态:

  1. 同意最终用户许可协议(EULA)。
    使用箭头键、页面向上/向下键或滚动轮在EULA中滚动。
  2. 组件选择
  • 使用箭头键在菜单中导航。左右键将展开/折叠子元素。
  • 再光标所在位置,通过按下空格键或回车键,来选择或取消选择要安装的项目。
  • 将光标移到有高级选项的项目上,按“A”键可以看到选项菜单,目前仅CUDA Toolkit和CUDA Samples选项才有高级选项。
  1. 高级选项
    在这里可以设置特定组件的安装路径。

1.4.4 禁用Nouveau

要安装显示驱动程序,必须先禁用Nouveau驱动程序。Linux的每个发行版都有不同的方法来禁用Nouveau。这里只介绍Ubuntu下禁用方法。

如果下面的命可以输出任何东西,说明加载了Nouveau驱动:

$ lsmod | grep nouveau

在/etc/modprobe.d/blacklist-nouveau.conf下创建一个新的文件,并输入以下内容:

blacklist nouveau
options nouveau modeset=0

重新生成内核文件:

$ sudo update-initramfs -u

1.4.5 设备节点验证

检查设备文件/dev/nvidia*是否存在,并具有正确的(0666)文件权限。CUDA驱动程序使用这些文件与NVIDIA驱动程序的内核模式部分进行通信。使用NVIDIA驱动程序的应用程序,如CUDA应用程序或X服务器(如果有的话),通常会使用与NVIDIA驱动程序绑定的setuidnvidia-modprobe工具自动创建这些文件。但是,有些系统不允许setuid二进制文件,因此如果这些文件不存在,您可以使用如下所示的启动脚本手动创建它们:

#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
  # Count the number of NVIDIA controllers found.
  NVDEVS=`lspci | grep -i NVIDIA`
  N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
  NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
  N=`expr $N3D + $NVGA - 1`
  for i in `seq 0 $N`; do
    mknod -m 666 /dev/nvidia$i c 195 $i
  done
  mknod -m 666 /dev/nvidiactl c 195 255
else
  exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
  # Find out the major device number used by the nvidia-uvm driver
  D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
  mknod -m 666 /dev/nvidia-uvm c $D 0
else
  exit 1
fi

1.4.6 高级选项

略。

1.4.7 卸载

要卸载CUDA工具包,请运行工具包bin目录中提供的卸载脚本。默认情况下,它位于/usr/local/cuda-10.1/bin:

$ sudo /usr/local/cuda-10.1/bin/cuda-uninstaller

要卸载NVIDIA驱动程序,请运行NVIDIA -uninstall:

$ sudo /usr/bin/nvidia-uninstall

要启用Nouveau驱动程序,请删除在禁用Nouveau部分中创建的黑名单文件,并重新生成内核initramfs/initrd。

1.5 集群管理包

1.5.1 概述

集群管理包是作为RPM和Deb包的备选集提供的,它们将被部署管理工具作为独立包使用。这些包在x86_64架构上可用于RHEL 6、RHEL 7、Ubuntu 14.04和Ubuntu 16.04。集群管理包包括三个部分:CUDA工具包、NVIDIA驱动程序包和README。

集群管理工具包包分为运行包cuda-cluster-runtime-10-1和开发包cuda-cluster- develi -10-1,开发包依赖于运行包。驱动程序包与包管理部分中使用的通用RPM和Deb解决方案中提供的包相同。

README描述了集群管理包的包和内核源依赖项,它还描述了独立集群管理包的安装顺序。

1.6 CUDA跨平台环境

略。

1.7 安装后处理操作

安装后的操作必须手动执行。这些操作分为强制、推荐和可选部分。

1.7.1 强制操作

在使用CUDA工具包和驱动程序之前,必须在安装之后采取一些操作。

1.7.1.1 环境设置

环境变量PATH中应该包含/usr/local/cuda-10.1/bin和/usr/local/cuda-10.1/NsightCompute-。指的是CUDA工具包附带的Nsight计算版本,例如2019.1。

将此路径添加到path变量:

$ export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}

此外,在使用运行文件安装方法时,LD_LIBRARY_PATH变量需要包含64位系统上的/usr/local/cuda-10.1/lib64,或者32位系统上的/usr/local/cuda-10.1/lib

64位操作系统上添加环境变量:

$ export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

32位操作系统上添加环境变量:

$ export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

注意,在使用运行文件安装方法使用自定义安装路径时,上述路径会发生变化。

$ sudo gedit ~/.bashrc

在打开的文件中添加以下内容:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
export PATH=$PATH:/usr/local/cuda-10.1/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1
$ source ~/.bashrc

1.7.2 建议操作

建议使用其他操作来验证安装的完整性。

1.7.2.1 安装持久性守护进程

NVIDIA在Linux上提供了一个用户空间守护进程来支持跨CUDA作业运行的驱动状态持久性。守护进程方法为这个问题提供了比持久性模式更优雅、更健壮的解决方案。有关NVIDIA持久性守护进程的详细信息,请参阅此处的文档

NVIDIA持久性守护进程可以作为root用户启动,运行如下:

$ /usr/bin/nvidia-persistenced –verbose

这个命令应该在root下运行,有关如何实现自动化的详细信息,请参阅Linux发行版的init文档。

1.7.2.2 安装可写的样例

为了修改、编译和运行样例,必须使用写权限安装样例。这里提供了一个方便的安装脚本:

$ cuda-install-samples-10.1.sh <dir>

该脚本与cuda-samples-10-1包一起安装。cuda-samples-10-1包只在/usr/local/cuda-10.1/samples.中安装一个只读副本。

1.7.2.3 验证安装

在继续之前,务必验证CUDA工具包是否能够找到并与之正确通信的支持CUDA的硬件。为此,需要编译并运行一些包含的示例程序。

注意:确保路径和LD_LIBRARY_PATH变量(如果使用runfile安装方法)设置正确。

(1) 验证驱动器版本
如果安装了驱动程序,请验证是否加载了正确的版本。如果您没有安装驱动程序,或者使用的操作系统没有通过内核模块(如L4T)加载驱动程序,请跳过此步骤。

当驱动程序已经加载时,可以通过执行命令找到驱动程序版本:

$ cat /proc/driver/nvidia/version

在这里插入图片描述
注意,这个命令在iGPU/dGPU系统上不起作用。

(2) 编译案例
可以通过在终端窗口中运行nvcc -V来检查CUDA工具包的版本。nvcc命令运行编译器驱动程序来编译CUDA程序。它为C代码调用gcc编译器,为CUDA代码调用NVIDIA PTX编译器。

在这里插入图片描述
NVIDIA CUDA工具包包括源代码形式的示例程序。应该将它们编译到~/NVIDIA_CUDA-10.1_Samples下并输入make,生成的二进制文件将放在~/NVIDIA_CUDA-10.1_Samples/bin下。

$ cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery

(3) 运行二进制文件

编译之后,在~/NVIDIA_CUDA-10.1_Samples下查找并运行deviceQuery。如果安装并正确配置了CUDA软件,deviceQuery的输出应该类似于下图所示。

在这里插入图片描述

1.8 高级设置

略。

1.9 卸载CUDA工具包和驱动

按照以下步骤从系统中正确卸载CUDA工具包和NVIDIA驱动程序。这些步骤将确保卸载是干净的。
移除CUDA工具包:

$ sudo apt-get --purge remove "*cublas*" "cuda*"

移除NVIDIA驱动程序:

$ sudo apt-get --purge remove "*nvidia*"

1.10 cuDNN安装

首先在https://developer.nvidia.com/rdp/form/cudnn-download-survey下载cuDNN,有两种文件形式,一种是压缩包Tar,另一种是deb,因此对应两种安装方式。注意在安装时将下面命令中换成自己的安装版本。

1.10.1 从Tar中安装

  1. 切换到cuDNN Tar文件所在目录下;
  2. 解压cuDNN包;
$ tar -xzvf cudnn-10.1-linux-x64-v7.6.5.32.tgz
  1. 拷贝以下文件到CUDA工具包目录,并更改文件权限。
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-10.1/lib64/libcudnn*

1.10.2 从Debian文件安装

  1. 切换到cuDNN Debian文件所在目录下;
  2. 安装运行库:
sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb
  1. 安装开发库:
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb
  1. 安装代码示例和cuDNN库用户指南:
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.1_amd64.deb

1.10.3 验证安装是否成功

要验证是否安装了cuDNN并正常运行,可以编译debian文件中/usr/src/cudnn_samples_v7目录下的mnistCUDNN示例。

  1. 拷贝cuDNN示例到可写路径。
$ cp -r /usr/src/cudnn_samples_v7/ $HOME
  1. 进入该路径。
$ cd  $HOME/cudnn_samples_v7/mnistCUDNN
  1. 编译mnistCUDNN示例。
$make clean && make
  1. 运行mnistCUDNN示例。
$ ./mnistCUDNN

如果cuDNN在Linux系统上正确安装并运行,将会输出以下消息:
Test passed!

1.11 maven配置GPU

安装完CUDA之后重启电脑,在自己项目的POM.xml中加入以下依赖:

<dependency>
 <groupId>org.nd4j</groupId>
 <artifactId>nd4j-cuda-10.1</artifactId>
 <version>${nd4j.version}</version>
</dependency>
<dependency>
 <groupId>org.nd4j</groupId>
 <artifactId>nd4j-cuda-10.1-platform</artifactId>
 <version>${nd4j.version}</version>
</dependency>
发布了42 篇原创文章 · 获赞 56 · 访问量 5724

猜你喜欢

转载自blog.csdn.net/hba646333407/article/details/103384417