CentOS 7.9安装Tesla M4驱动、CUDA和cuDNN

fbfa22f7e6a080ac7482ed15cc4a457e.gif

正文共:1333 字 21 图,预估阅读时间:2 分钟

上次我们在Windows上尝试用Tesla M4配置深度学习环境TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?,但是失败了。考虑到Windows本身就会调用图形显示,可能会有影响,所以我们本次换用Linux系统(CentOS 7.9)来尝试一下。

a75141b46acf3600d798e1c33523472f.png

1、下载软件

结合上次的经验教训,我们本次先确定合适的CUDA(Compute Unified Device Architecture) Toolkit的版本。

Tesla M4 GPU(GM206GL)是一款基于Maxwell架构的入门级Tesla GPU,发布于2015年6月切换到WDDM模式,Tesla M4可以用于本地显示输出了!。由于GPU高速发展,2016年Nvidia就发布了基于Pascal架构的Tesla P4,其在性能和功耗方面相比Tesla M4都有大幅提升,因此逐渐取代Tesla M4成为主流;2018年,Nvidia又发布了基于Turing架构的Tesla V100 GPU,在性能和功耗方面又有大幅提升,并逐渐取代了Tesla P4成为主流。一般来讲,认为Tesla M4的生命周期大约3年,即从2015年发布到2018年淘汰。

Tesla M4使用的是Maxwell架构,但因为其生命周期较短,所以官网介绍并非所有Maxwell架构GPU都支持所有CUDA版本和cuDNN版本。我们在Nvidia官方的CUDA兼容性列表中可以查看:

https://developer.nvidia.com/cuda-gpus

7d40cedb720a30c549479bbc95898712.png

可以看到,Tesla M系列GPU只列出了M40和M60两款,但是M40和M4的主要差别在于规格和性能差异,所以理论上讲,M4应该也算是支持的。

然后我们到CUDA的下载页面找一下合适的版本。

https://developer.nvidia.com/cuda-toolkit-archive

3fc7bc2a54dad134d3936b0684c05a44.png

根据时间推断,应该是介于2015年到2019年中间,符合要求的最低版本应该不低于7.0,最高版本应该不低于10.0,网传是11.7版本。为了保险起见,我们先下载2018年9月发布的10.0版本试一下。

695808d7b44a884662c25e51ef1899fd.png

CUDA支持local(本地)和network(网络)两种安装方式。本地安装程序是自包含的,包括每个组件。它是一个大文件(runfile文件大小为2.0 GB,补丁包为3.3 MB;rpm文件大小为1.9 GB,补丁包为3.6 MB),只需要从互联网上下载一次,就可以安装在多个系统上,推荐在低带宽或隔绝互联网连接环境下试用。

而网络安装程序是一个小型安装程序客户端(3.3 KB),它会在安装过程中下载所需的组件。下载速度更快,但每次新安装时都需要重新下载每个组件。我先给大家简单展示一下使用网络安装程序安装的效果。

rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
yum clean all
yum install -y cuda

f387e615ca6a412ff1165715f6530a7a.png

可以看到,安装文件还是比较大的,下载文件大小为4.3 GB,比本地下载的文件还大,安装占用空间为8.1 GB,主要是下载时间太长。

cd9ee959ff91a5dc17d8c33c259999a7.png

所以,还是推荐大家换用runfile或rpm进行安装。

确认完CUDA版本,就可以去下载GPU驱动了,在下载页面,我们选择型号为Tesla M4,操作系统选择为RHEL 7,CUDA版本选择为10.0,然后搜索驱动。

181201d5c403437fb0b67ddcbeb9b064.png

在驱动下载页面,下载好驱动文件备用。

212f8b0a677e970f2c79af0daa598924.png

对应的,还建议安装一下cuDNN(CUDA Deep Neural Network library)扩展,列表页面如下:

https://developer.nvidia.com/rdp/cudnn-archive

dd620ce68161e76cf2b8662a1a657a8f.png

因为GPU驱动是在2019年9月份发布的,在这中间,我们找几个和CUDA 10.0相匹配、并且发布时间在2019年的,最终选定同样是2019年发布的7.6.4版本,应该是可以匹配的。

f1dc84a497660adc83e5638be2b86812.png

选择下载Linux版本。

525c7246f78c34b55371918aea60c7a7.png

2、检查配置系统环境

软件都下载好之后,我们先检查一下系统。在安装NVIDIA驱动之前,需要确保安装了epel-release以便后续安装依赖包。

yum install -y epel-release

d15a36caad7bc69f8cee21120116a3b7.png

然后,更新系统以确保系统是最新的软件包。

yum list && yum update -y

驱动安装可能需要特定的内核头文件和DKMS(Dynamic Kernel Module Support)模块,安装开发工具包,并根据实际内核版本安装相应的kernel-devel包。

yum groupinstall "Development Tools" -y
yum install -y kernel-devel-$(uname -r) dkms

接下来,将下载的GPU驱动、CUDA和cuDNN上传到主机。

95754e1d9b78bfda01f1968bbdb0859d.png

c2b39a196f6e832e1168310423022cf7.png

3、安装GPU驱动

先安装GPU驱动。

chmod +x NVIDIA-Linux-x86_64-410.129-diagnostic.run
./NVIDIA-Linux-x86_64-410.129-diagnostic.run --dkms --no-opengl-files

0c44f007562616a5c0f12b5a3ebe8e95.png

询问是否使用DKMS注册,默认使用YES。

042d9f661ed11bf01458544c54e8b370.png

提示信息,直接回车。

6d143c52755743fd205caa0296a4c9bb.png

是否安装32位的库,默认安装上吧。

67cd2448c4550e207cdac62bca293e63.png

等待驱动安装完成。

ea026813417eecd3f61ca227f7857ab2.png

重启虚拟机,检查驱动是否安装成功。

nvidia-smi

be3721e8db1b3a64c6d6a6cf282fc495.png

能够正常显示GPU型号、规格以及传感器信息。

ec5386bf20a82a8c42210d676936c4ab.png

4、安装CUDA及cuDNN

参考CUDA的官方指导,安装软件。

chmod +x cuda_10.0.130_410.48_linux.run
./cuda_10.0.130_410.48_linux.run

展示完EULA并接受,之后配置各项参数。

d093ec63e3ba861ddfef3b23e012ca80.png

安装完CUDA Toolkit之后,按照提示,向环境变量中添加文件路径。

echo 'export PATH=/usr/local/cuda-10.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

bf130884db197a83677e129b9a4f416b.png

检查CUDA是否安装成功。

97791b2acc5c81d84f027920c49452a4.png

cuDNN在Linux下的安装和Windows一样,只要将文件解压,然后复制到CUDA Toolkit目录下即可。

tar -zxf cudnn-10.0-linux-x64-v7.6.4.38.tgz
cp -avr cuda/ /usr/local/cuda-10.0/

3aab97d653abc0ee18b300b547970819.png

至此,软件安装完成。

2b4b5309114dd2cdb8d77f8c02b3a21a.gif

长按二维码
关注我们吧

77b87bf8e61380ddc13397af2b532187.jpeg

dd0835df58af7edd21e30b0affc3062e.png

Windows部署TensorFlow后识别GPU失败,原因是啥?

TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?

轻轻松松达到1.8 Gbps,果然HCL还是搭配高档电脑更好使

将Juniper虚拟防火墙vSRX导入EVE-NG

Juniper虚拟防火墙vSRX配置防火墙策略实现业务转发

配置VMware实现从服务器到虚拟机的一键启动脚本

Ubuntu 23.10通过APT安装Open vSwitch

使用Python脚本实现SSH登录设备

VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!

VMWare ESXi 7.0的磁盘空间莫名少了120 GB?看这里!

同一个问题,Gemini、ChatGPT、Copilot、通义千问和文心一言会怎么答?

CentOS 7配置Bonding网卡绑定

H3C交换机S6850配置M-LAG基本功能

H3C交换机S6850配置M-LAG三层转发

Windows Server调整策略实现999999个远程用户用时登录

IPv6从入门到精通

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode662:二叉树最大宽度(二叉树非典型最大宽度,BFS层序遍历重编号)

题目 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,…

金明的预算方案 ——分组背包

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。 更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”…

复习2:带头双向链表

1.双向链表 typedef struct shuangxiang { int data; struct shuangxiang *next; struct shuangxiang *prev; }biao; 2.哨兵位创建 void setshaobing(biao**point) { *point(biao*)malloc(sizeof(biao)); *point->data-1; *point->next*point->prevNULL; } 3.尾插 …

服务器操作系统windows和linux区别对比

阿里云服务器镜像Windows和Linux操作系统有什么区别?性能有差异吗?有,同配置下Linux性能要优于Windows,但这与阿里云无关,仅仅是linux和windows之间的区别。另外,阿里云提供的windows和linux操作系统均为正…

JAVA设计模式之备忘录模式详解

备忘录模式 1 备忘录模式介绍 备忘录模式提供了一种对象状态的撤销实现机制,当系统中某一个对象需要恢复到某一历史状态时可以使用备忘录模式进行设计. 很多软件都提供了撤销(Undo)操作,如 Word、记事本、Photoshop、IDEA等软件在编辑时按…

【深度学习】S1 预备知识 P1 张量

目录 张量创建第一个张量张量的下载与引入创建第一个张量 张量的大小和形状张量的形状张量的大小 改变张量的形状创建特殊张量张量的基本运算按元素运算张量连结逻辑运算张量求和 张量的广播机制张量的索引与切片索引、切片访问张量通过切片方式节省内存占用 张量转换为其他对象…

Stable Diffusion 模型下载:majicMIX fantasy 麦橘幻想

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

STM32自学☞PWM驱动舵机(按键控制)

PWM.c文件 #include "stm32f10x.h" /*初始化函数*/ void PWM_Init(void){ /*开启时钟*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟 /*GPIO初始化*/ G…

洛谷:P1331 海战

题目描述 在一个方形的盘上,放置了固定数量和形状的船只,每只船却不能碰到其它的船。在本题中,我们认为船是方形的,所有的船只都是由图形组成的方形。 求出该棋盘上放置的船只的总数。 输入格式 第一行为两个整数 R 和 C&…

LeetCode1143. Longest Common Subsequence——动态规划

文章目录 一、题目二、题解 一、题目 Given two strings text1 and text2, return the length of their longest common subsequence. If there is no common subsequence, return 0. A subsequence of a string is a new string generated from the original string with so…

【Web】Redis未授权访问漏洞学习笔记

目录 简介 靶机配置 Redis持久化 Redis动态修改配置 webshell 反弹shell Redis写入反弹shell任务 加固方案 简介 Redis(Remote Dictionary Server 远程字典服务器)是一个开源的内存数据库,也被称为数据结构服务器,它支持…

Ubuntu Desktop 打开和关闭 Terminal

Ubuntu Desktop 打开和关闭 Terminal 1. 打开 Terminal 快捷键2. Search your computer -> Terminal -> Lock to Launcher3. 关闭 Terminal 快捷键References 1. 打开 Terminal 快捷键 Ctrl Alt T 2. Search your computer -> Terminal -> Lock to Launcher 3…

SCI论文作图规范

SCI论文作图规范包括以下几个方面: 一、图片格式 SCI论文通常接受的图片格式包括TIFF、EPS和PDF等。其中,TIFF格式是一种高质量的图像格式,适用于需要高分辨率和颜色准确性的图片;EPS格式是一种矢量图形格式,适用于需…

【深度学习】S1 预备知识 P2 数据预处理

目录 准备工作创建数据集读取数据集处理缺失值处理连续数据缺失值处理离散数据缺失值 转换为张量格式 在应用深度学习技术解决实际问题时,数据的预处理步骤至关重要。在 Python 的各种数据分析工具中,我们选择了 pandas 库来进行这一工作,因为…

力扣:376. 摆动序列

解题思路&#xff1a; 1.先规定好左坡值和右坡值&#xff0c;在计算当前节点比上一节点 的差值。如果左坡值>0且右坡值<0或者 左坡值<0且右坡值>0,符合摆动序列的条件sum加一&#xff0c;同时把右坡值的差值赋值个左坡值&#xff0c;这样就不断在更新左坡值的差值…

位运算+leetcode ( 2 )

题一&#xff1a;只出现一次的数字&#xff08;1&#xff09; 1.链接 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 2.思想 借用位运算中异或操作符的特点&#xff0c;a^a0&#xff0c;0^aa先定义一个sum0就用一个循环来遍历这个数组&#xff0c;每次都进行…

Google Cloud 2024 年报告重点介绍了关键的网络威胁和防御

Google Cloud 的 2024 年威胁范围报告预测了云安全的主要风险&#xff0c;并提出了加强防御的策略。 该报告由 Google 安全专家撰写&#xff0c;为寻求预测和应对不断变化的网络安全威胁的云客户提供了宝贵的资源。 该报告强调&#xff0c;凭证滥用、加密货币挖矿、勒索软件和…

GO 的 Web 开发系列(五)—— 使用 Swagger 生成一份好看的接口文档

经过前面的文章&#xff0c;已经完成了 Web 系统基础功能的搭建&#xff0c;也实现了 API 接口、HTML 模板渲染等功能。接下来要做的就是使用 Swagger 工具&#xff0c;为这些 Api 接口生成一份好看的接口文档。 一、写注释 注释是 Swagger 的灵魂&#xff0c;Swagger 是通过…

C++ 广度优先搜索(bfs)(五十四)【第一篇】

今天我们来学习一下一个新的搜索&#xff0c;广度优先搜索。 1.广度优先搜索的前提 队列&#xff08;queue&#xff09; 是一种 操作受限制 的线性表&#xff0c;其限制&#xff1a; 只允许从表的前端&#xff08;front&#xff09;进行删除操作&#xff1b; 只允许在表的后端…

嵌入式Qt Qt 中的坐标系统

一.Qt中的坐标系统 实验1&#xff1a;窗口坐标大小 #include <QtGui/QApplication> #include <QPushButton> #include <QDebug> #include "widget.h" int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();qDebug()&…