专栏首页用户2737519的专栏Linux下GPU云服务器安装 NVIDIA Tesla 驱动
原创

Linux下GPU云服务器安装 NVIDIA Tesla 驱动

背景介绍:

本篇介绍腾讯云环境GPU云服务器nvidia tesla驱动安装步骤。有很多腾讯云的使用者,在使用GPU服务器过程中,对驱动安装或者使用中有一些疑惑,比如系统kernel更新了,驱动失效了等问题。

驱动安装途径:

目前腾讯云环境下支持安装GPU驱动的方式如下:

  1. 使用预装 GPU 驱动的镜像,参考链接:https://cloud.tencent.com/document/product/560/30129
  2. 使用公共镜像的时候,支持后台自动安装GPU驱动。
  3. 自定义机器初始化,设置自定义数据来安装GPU驱动,https://cloud.tencent.com/document/product/213/17525
  4. 很多公司,有初始化流程或者配置流程平台,可以创建出干净环境的机器,后边自定义安装驱动。
  5. 目前官网控制台支持,后台自动安装GPU驱动,如下图:

安装驱动:

NVIDIA Telsa GPU 的 Linux 驱动在安装过程种需要编译 kernel module,所以要求系统安装好了 gcc 和编译 Linux Kernel Module 所依赖的包,例如 kernel-devel-$(uname -r) 等。

  • 登录NVIDIA 驱动下载或打开链接 http://www.nvidia.com/Download/Find.aspx 。
  • 选择操作系统和安装包。以 P4 为例,搜寻驱动,然后选择要下载的驱动版本。

注意:操作系统选择 Linux 64-bit 代表下载的是 shell 安装文件,如果选择具体的发行版下载的文件则是对应的包安装文件。

  • 选择特定的版本跳转后,单击【DOWNLOAD】。
  • 再次跳转后,如有填写个人信息的页面可选择直接跳过,出现下面页面时,右击【AGREE&DOWNLOAD】,右键菜单里复制链接地址。
  • 登录 GPU 实例,使用 wget 命令, 粘贴上述步骤复制的链接地址下载安装包;或通过在本地系统下载 NVIDIA 安装包, 上传到 GPU 实例的服务器。
# wget http://us.download.nvidia.com/tesla/440.33.01/NVIDIA-Linux-x86_64-440.33.01.run
  • 对安装包加执行权限。 例如,对文件名为NVIDIA-Linux-x86_64-440.33.01.run加执行权限:
# chmod +x NVIDIA-Linux-x86_64-440.33.01.run 
  • 安装当前系统对应的 gcc 和 kernel-devel 包
# sudo yum install -y gcc kernel-devel-xxx

xxx是内核版本号,可以通过 uname -r 查看。

  • 安装dkms
# sudo yum install dkms -y

dkms的作用:nvidia-installer can optionally register the NVIDIA kernel module sources, if installed, with DKMS, then build and install a kernel module using the DKMS-registered sources. This will allow the DKMS infrastructure to automatically build a new kernel module when changing kernels. During installation, if DKMS is detected, nvidia-installer will ask the user if they wish to register the module with DKMS; the default response is 'no'. This option will bypass the detection of DKMS, and cause the installer to attempt a DKMS-based installation regardless of whether DKMS is present.

白话文翻译:即注册nvidia驱动到dkms中,通过dkms管理,当内核更新的时候,会自动build新的nvidia内核模块。

  • 运行驱动安装程序后按提示进行后续操作。
#  ./NVIDIA-Linux-x86_64-440.33.01.run --dkms --silent

其中--silent的作用,不弹出UI界面,单台安装还好,否则批量操作,就比较尴尬了。

  • 验证驱动安装是否正常
# nvidia-smi 
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:06.0 Off |                  Off |
| N/A   39C    P8     7W /  75W |      0MiB /  8121MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
  • 查看系统已安装的module
# lsmod|grep nvidia
nvidia_drm             43714  0 
nvidia_modeset       1110184  1 nvidia_drm
nvidia              19893642  13 nvidia_modeset
ipmi_msghandler        46608  2 ipmi_devintf,nvidia
drm_kms_helper        159169  2 cirrus,nvidia_drm
drm                   370825  5 ttm,drm_kms_helper,cirrus,nvidia_drm
i2c_core               40756  4 drm,i2c_piix4,drm_kms_helper,nvidia
  • 查看nvidia的路径与版本等信息
# modinfo nvidia
filename:       /lib/modules/3.10.0-693.el7.x86_64/extra/nvidia.ko.xz
alias:          char-major-195-*
version:        440.33.01
supported:      external
license:        NVIDIA
rhelversion:    7.4
srcversion:     A5E9226CB2A7B16B12DA2CA
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        ipmi_msghandler,i2c-core
vermagic:       3.10.0-693.el7.x86_64 SMP mod_unload modversions 
parm:           NvSwitchRegDwords:NvSwitch regkey (charp)
parm:           NVreg_Mobile:int
parm:           NVreg_ResmanDebugLevel:int
parm:           NVreg_RmLogonRC:int
parm:           NVreg_ModifyDeviceFiles:int
parm:           NVreg_DeviceFileUID:int
parm:           NVreg_DeviceFileGID:int
parm:           NVreg_DeviceFileMode:int
parm:           NVreg_InitializeSystemMemoryAllocations:int
parm:           NVreg_UsePageAttributeTable:int
parm:           NVreg_MapRegistersEarly:int
parm:           NVreg_RegisterForACPIEvents:int
parm:           NVreg_EnablePCIeGen3:int
parm:           NVreg_EnableMSI:int
parm:           NVreg_TCEBypassMode:int
parm:           NVreg_EnableStreamMemOPs:int
parm:           NVreg_EnableBacklightHandler:int
parm:           NVreg_RestrictProfilingToAdminUsers:int
parm:           NVreg_PreserveVideoMemoryAllocations:int
parm:           NVreg_DynamicPowerManagement:int
parm:           NVreg_EnableUserNUMAManagement:int
parm:           NVreg_MemoryPoolSize:int
parm:           NVreg_KMallocHeapMaxSize:int
parm:           NVreg_VMallocHeapMaxSize:int
parm:           NVreg_IgnoreMMIOCheck:int
parm:           NVreg_NvLinkDisable:int
parm:           NVreg_RegisterPCIDriver:int
parm:           NVreg_RegistryDwords:charp
parm:           NVreg_RegistryDwordsPerDevice:charp
parm:           NVreg_RmMsg:charp
parm:           NVreg_GpuBlacklist:charp
parm:           NVreg_TemporaryFilePath:charp
parm:           NVreg_AssignGpus:charp

按照本文安装,可以保障系统内核更新的时候,驱动自动build,不会出现驱动不可用状态。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 探秘|业余时间怎么培养数据分析的能力?

    想要培养数据分析的能力,我认为可以从两部分来着手:一是数据分析方法论的建立,二是数据分析从入门到精通的知识学习。 那么该如何搭建自己的数据分析知识体系?数据分析...

    灯塔大数据
  • 结合案例深入解析适配器模式(一)

    将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

    李红
  • ASP.NET Core MVC 如何获取请求的参数

    一次HTTP请求,就是一次标准IO操作。请求是I,是输入;响应式O,是输出。任何web开发框架,其实都是在干这两件事:

    kklldog
  • 结合案例深入解析适配器模式(一)

    将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

    李红
  • 牛顿法(Newton Method)求解f(x)=0

    https://en.wikipedia.org/wiki/Newton%27s_method

    黑豆梨
  • Netty中序列化框架Protobuf的简单实现

      Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。

    用户4919348
  • [Go] 轻量服务器框架tcp的粘包问题 封包与拆包

    tcp传输的数据是以流的形式传输的,因此就没有办法判断到哪里结束算是自己的一个消息,这样就会出现粘包问题,多个包粘在一起了

    陶士涵
  • 微服务架构下的安全认证与鉴权

    从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上...

    java思维导图
  • Angular2、Ionic、TypeScript、es6的关系?

    其实对于这3个东西来说,我根本搞不清楚他们之间的关系,突然之间意识到,自己不能再这样搞不清楚关系的就学下去。这样就像angular1似的,自己还是什么都不会,a...

    贺贺V5
  • Inhale:一款功能强大的恶意软件分析与分类工具

    Inhale是一款针对恶意软件的分析与分类工具,广大安全研究人员可以利用Inhale来对恶意软件中的很多的静态分析操作进行自动化实现以及扩大覆盖范围。请注意,当...

    FB客服

扫码关注云+社区

领取腾讯云代金券