【亿点笔记】Proxmox VE(PVE) 下直通GPU给LXC 进行CUDA coding 您所在的位置:网站首页 linux安装a卡驱动 【亿点笔记】Proxmox VE(PVE) 下直通GPU给LXC 进行CUDA coding

【亿点笔记】Proxmox VE(PVE) 下直通GPU给LXC 进行CUDA coding

#【亿点笔记】Proxmox VE(PVE) 下直通GPU给LXC 进行CUDA coding| 来源: 网络整理| 查看: 265

前言

这篇笔记写给自己以及那些准备入坑,或者掉入坑里的人。

硬件配置

CPU:E5-2680V1 ES *2     

主板: 华硕Z9PA-D8 (并且配置了PIKE卡,ASBM6远程管理模块)

内存:DDR3-1600Mhz 32G RECC*4 Total 128G

显卡准确来说是计算卡:Tesla K80

磁盘阵列卡:芯片为LSI2108的IBM5015,商家说不能刷直通。实际能不能刷没试过。

硬盘:2T 7200RPM SAS硬盘*6    3T 7200RPM SAS硬盘*4  Toal 24TB容量

在远古时代这是一台价值四五万的服务器,确信脸。

坑一:K80 有两个核心,每个核心14G显存,这对主板有严格要求,即使主板Bios里有Above 4G decoding也不一定能支持,我用华硕B85M-Gamer这块板子试过了,插上去之后,在Win10下的资源管理器里会显示PCIE资源不足,没法顺利安装驱动。K80挑板子,朋友们买计算卡一定要查清楚计算卡与主板兼容的问题。

坑二:K80散热是被动散热,需要自行加装风扇,我这里的办法是用尼龙轧带把两个8CM暴力扇捆到计算卡两个核心位置上吹风,再反向捆绑一个9CM的猫扇(家里面有什么用什么了,8CM的普通扇也行)在中间位置抽风,防止中间位置积热。这样改造就相当于是一个3.5槽位计算卡了,如果机箱内还有其他PCIE设备要注意位置是否能装得下的问题。

坑三:如果你恰巧用的是华硕Z9PA,或者说是C602芯片组的主板,你现在点亮了,但是在直通到虚拟机上要么发生蓝屏死机【虚拟机宿主机设置问题】,要么只能直通一个核心的话【虚拟机设置或者是主板PCIE资源不够的问题】,那可以尝试一下PVE下的LXC。

LXC是什么和详细的优点略过。不过可以理解为比虚拟机还要高效率的存在,类似于Docker容器的存在【也不知道这样表述正不正确】

再次,如果很不幸,你买了一张K80,用的是Z9PA-D8这样勉强能够K80正常使用的主板,你有开各种虚拟机做服务器的需求,而且你同时还需要再一台机器里面使用CUDA,简单的来说你在Build一个AIO(ALL IN ONE)服务器的话,那么接下来的内容就是我这十天不吃不喝不睡捣鼓成功的结果。

正文

为了让PVE的GPU直通到LXC,我重装了两次PVE。其中一次还格式化错硬盘,4T的学习资料 全没了。

PVE7系统安装部分略。

全新的PVE7,目前的内核是5.11.4。顺便说一下,众所周知PVE是基于Debian的,而PVE7是基于Debian11 bullseye的。如果你在使用的是PVE6 buster,需要在操作上注意一些差别。

第一步修改订阅库也就是Repository。

PVE7:

PVE6

然后更新库。

然后安装header

首先,通过uname -a 查询自己的内核。

然后,apt-cache search pve-header 查询跟自己内核版本一样的header

注意这里说的是pve-header 而不是linux-header

然后 ##apt install pve-headers-5.11.22-4-pve##这个是我的,PVE7下的具体你们要把 install 后面的内容换成你们的版本号。

接下来安装dkms,这个包太重要了,不然安装nvidia驱动总是报错。

然后再确认一下,计算卡插上了,并且能准确显示。

这里输出的结果应该是这样的:

Kernel driver还不是Nvidia没有关系因为现在还没有安装Nvidia的驱动,需要注意的是这个部分

出现上面这个情况说明能用。(不一定一摸一样,就看内存是不是都分配到了地址。)

出现下面的情况说明不能正常使用:

此方法出处:

https://forums.developer.nvidia.com/t/driver-installing-problem-for-nvidia-tesla-k80-under-linux/39124/11

然后安装显卡驱动

PVE7

PVE6

安装完成之后去添加模块

然后再看同样目录里面其他.conf有没有把nvidia兼容驱动(主要是nouveau,nvidiafb这两个)屏蔽掉。比如说 nvidia-blacklist.conf 都看一个遍,如果有就不要重复添加,如果没有那就手动屏蔽。可以再回到nvidia.conf里面添加下面两行代码:

然后更新模块

然后新建规则文件

然后重启PVE

然后验证一下驱动装好没有。

这三条命令输出的结果应该分别是这样的:

新建一个LXC,我Ubuntu不知道为什么没有成功可能是我某个地方操作不对,有兴趣的也可以去试一下,理论上像CentOS Ubuntu 这类Linux系统应该都没有问题的。这里我用Debian10作为演示(其实是为了避免更多的坑)

从PVE 的WebUI上直接下载Debian的模板。然后应用到实例上。6C,8G, 1T,非特权+嵌套+键盘。

进入LXC系统后

然后通过run file来安装nvidia驱动,驱动的版本要跟宿主机一摸一样。

通过在宿主机上输入nvidia-smi得知目前的驱动版本是460.91.03。

然后通过wget 获取驱动,没有wget 那就apt-get install wget -y 获取一个。

上述的那个网站你想要安装其他版本的只要改版本号就行了。

然后进行无核心安装

驱动安装完毕之后关闭LXC,回到宿主机,编辑LXC配置文件,进行显卡直通。

保存退出。

然后开启LXC。

输入以下命令

返回值分别为:

则说明成功,如果nvidia-smi 返回值错误,那多半是LXC没有安装好驱动(可能是依赖包没有装好,可能是还有别的我忘了说。),这里的驱动是要去核心。

通常一般的教程就到这里,完全没有讲怎么搭建CUDA环境。

有两种方法,

第一种最简单的是安装anaconda-navigator,然后再conda install cuda-toolkit,然后再配置一下环境变量就行了。

第二种是下载cuda-toolkit run file 然后手动安装,至于为什么不apt-get install cuda-toolkit。我是怕会自动安装上驱动,然后版本不对,导致直通失败。不过在Debian下 使用apt hold nvidia-driver 应该就能锁定显卡驱动的版本号。

第一种

Debian:

CentOS:

然后通过conda install 来安装cuda-toolkit

环境变量的话看一下输入命令nvcc有没有反应,如果说bash command not found那就是没有配置环境变量,如果说nvcc fatal,那说明配置好了。

防止我自己也忘记怎么配置环境变量我也Mark一下:

如果CUDA文件夹有版本号那就改成有版本号,没有就不用改,不确定就直接 ls /usr/local 看下cuda带不带版本号的。

第二种

从nvidia官网获取run file,不管是通过迅雷下载然后再通过winscp传到LXC上,还是直接wget

(这里推荐用迅雷下载好,然后再传到LXC上这样方法,这样做会更加稳定,稳就是快。)

我选择了一个版本跟我显卡驱动匹配的CUDA toolkit进行安装。

传上LXC之后

不安装CUDA driver

然后

也可能是

记不太清楚了,ls出来有文件 有bin 有nvcc那说明成功安装了,然后再nvcc一下如果报nvcc fatal那说明环境变量已经弄好了,否则就需要去再弄一下环境变量。方法前面有提到。

还可以去试一试samples里面的文件跑一个benchmark

结果CUDA算力只有3.7 hhhhhhhhhhhhhhhhhhhh

不过到这一步已经表明K80能在Z9PA-D8平台上,同时与一张PCIEX1 的千兆网卡,两张磁盘阵列卡(Pike现在跑的是X4通道,M5105跑的是X8通道,不过好像资源有点不够用了2333333)兼容使用。使用K80的话不建议搭配C602或者X79平台使用。C612或者X99应该能够更加合适。

如果按照上述的操作估计也就一两个小时就能弄好了吧,如果能成功复刻,那这篇笔记的目的就达到了。

参考资料:

https://passbe.com/2020/02/19/gpu-nvidia-passthrough-on-proxmox-lxc-container/

https://medium.com/@MARatsimbazafy/journey-to-deep-learning-nvidia-gpu-passthrough-to-lxc-container-97d0bc474957

https://docs.anaconda.com/anaconda/install/linux/

https://wiki.debian.org/SourcesList

#####################################################

就是这个网站,看点一:解释了为什么K80不是每一张主板都能用,原理在里面写清楚了。看点二:Nvidia的staff跟提问者的对话,也相当有意思。

https://forums.developer.nvidia.com/t/driver-installing-problem-for-nvidia-tesla-k80-under-linux/39124/11

####################################################

https://www.how2shout.com/linux/how-to-install-and-use-backports-in-debian-11-bullseye/

https://docs.nvidia.com/cuda/archive/11.2.0/

https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html

以上硬件由Ms.Schedar特别赞助



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有