基于国产加速器海光DCU&GPGPU虚拟化功能用户指南(vDCU&vGPU)

目录

一、简介

二、基础环境与约束

2.1 硬件环境

2.2 软件环境

2.3 插件列表

 2.4 使用约束

三、使用指导

3.1 配置vDCU

3.1.1  查询物理DCU 资源

 3.1.2 划分vDCU 示例

3.1.3 查询vDCU 示例信息

3.2  使用vDCU

3.2.1  物理机内使用vDCU

3.2.2  Docker 容器内使用vDCU

3.2.3  Kubernetes 集群内使用vDCU

3.3 销毁vDCU


一、简介

本文主要针对vDCU 虚拟化设备插件的安装与初步使用测试进行介绍,包括物理机、容器环境与kubernetes 集群环境下vDCU 设备的使用。

二、基础环境与约束

2.1 硬件环境

  • 需要宿主机安装配置了DCU 设备;
  • 宿主机安装了DCU 对应版本的驱动驱动程序和DTK; 

2.2 软件环境

  • 需要保证kubernetes 集群版本在1.18 及以上;
  • 需要在宿主机安装DCU 驱动程序,可以在光合开发者社区下载:

https://cancon.hpccube.com:65024/6/main

  • 需要在光合开发者社区下载kubernetes 插件:

https://cancon.hpccube.com:65024/5/main

2.3 插件列表

插件名称版本
dcu-device-plugin-sharev2.0.0.240718

 2.4 使用约束

在各个场景下,海光DCU 虚拟化功能总体遵循以下约束:

  • 数量约束:目前海光DCU 虚拟化功能在一张物理卡上支持最多4 个vDCU;
  •  配置模式:目前海光DCU 虚拟化功能只支持静态配置;
  • 资源约束:每个vDCU 可以任意划分计算资源和显存资源,但是每张物理卡上所有vDCU 计算资源和显存资源总和不能超过物理DCU 的标称值;
  •  申请约束:每个进程只能使用一张vDCU 卡,如果配置多于一张vDCU,则只有第一张vDCU 被使用;
  • 操作约束:只能使用hy-virtual 命令行工具创建或销毁vDCU,手动修改vDCU 配置文件可能导致运行在此vDCU 上的进程崩溃;
  • 卡间通信:暂时不支持vDCU 之间的卡间通信;

 Docker 容器内使用vDCU 的额外约束:

  • 每个容器只能挂载一张vDCU 卡,如果挂载多余一张vDCU 卡,则只有第一张vDCU卡被使用;
  • 每张vDCU 卡只能被一个容器使用;

Kubernetes 集群内使用vDCU 的额外约束:

  • 目前只支持静态虚拟化方案,每个vDCU 节点需要提前完成vDCU 配置;
  •  vDCU 节点内所有的vDCU 配置需要保持一致,并给vDCU 节点打上相应标签;
  • 每个任务容器最多可以申请一张vDCU。当申请多于1 张vDCU 时,会收到超阈值警告但并不会失败,K8s 资源池会削减等于申请数量的vDCU,但是容器内只有第一张vDCU 会生效;

三、使用指导

3.1 配置vDCU

3.1.1  查询物理DCU 资源

hy-virtual -show-device-info

回显示例:

Device 0:
Actual Device: 0
Compute units: 60
Global memory: 34342961152 bytes
Device 1:
Actual Device: 1
Compute units: 60
Global memory: 34342961152 bytes
参数描述
Actual Device物理DCU 设备号
Compute units物理DCU 设备上的计算单元总数
Global memory物理DCU 设备上的现存总数

 3.1.2 划分vDCU 示例

 根据查询的物理DCU 设备信息,可以在指定的物理DCU 上进行vDCU 示例划分。
命令格式:

hy-virtual -d ${dev_id} \
-create-vdevices ${num_vdcu} \
-vdevice-compute-units $<cu_num, ...> \
-vdevice-memory-size $<mem_size, ...>

正常回显:

The virtual device is created successfully!
参数描述
dev_id指定虚化划分vDCU 的物理DCU 的id,如未指定则默
认为所有DCU 进行划分
num_vdcu物理DCU 设备上需要划分的vDCU 数量
<cu_num, ...>指定每张vDCU 上划分的计算单元数量,划分单位为1
个,根据num_vdcu 数量填写,用逗号隔开
<mem_size, ...>指定每张vDCU 上划分的显存容量,划分单位为1
MiB,根据num_vdcu 数量填写,用逗号隔开

例如,以下指令为划分4 个vDCU,分别包含5,15,20,20 个计算单元以及4096,
8192,8192,8192MiB 的显存

hy-virtual -create-vdevices 4 -d 0 \
-vdevice-compute-units 5,15,20,20 \
-vdevice-memory-size 4096,8192,8192,8192

成功分配的回显为:

The virtual device is created successfully!

3.1.3 查询vDCU 示例信息

使用hy-virtual 命令行工具可以查看已经分配的vDCU 信息。
命令格式:

hy-virtual -show-vdevice-info

回显示例:

Virtual Device 0:
Actual Device: 7
Compute units: 5
Global memory: 4294967296 bytes
Virtual Device 1:
Actual Device: 7
Compute units: 15
Global memory: 8589934592 bytes
Virtual Device 2:
Actual Device: 7
Compute units: 20
Global memory: 8589934592 bytes
Virtual Device 3:
Actual Device: 7
Compute units: 20
Global memory: 8589934592 bytes
参数描述
Virtual DevicevDCU 设备编号
Actual DevicevDCU 所在的物理DCU 设备号
Compute units当前vDCU 可使用的计算单元数量
Global memory当前vDCU 可使用的显存容量

3.2  使用vDCU

 目前海光DCU 虚拟化方案支持三种使用方式:物理机、原生Docker、K8s 集群。

3.2.1  物理机内使用vDCU

使用命令行工具hdms,可以在特定vDCU 上执行指定程序。
命令格式:

hdms -v ${vdev_id} -p "${target_proc}"
参数描述
vdev_id指定需要使用的vDCU,每个程序只能指定一块vDCU
target_proc需要使用vDCU 设备的进程

3.2.2  Docker 容器内使用vDCU

 用户参照配置流程创建vDCU 后,在容器启动的时候执行以下命令将vDCU 挂载至容
器内。以下命令表示用户在启动容器时,挂载第0 号虚拟DCU 实例。
命令格式:

docker run -it --name container_name \
--device=/dev/kfd \
--device=/dev/dri \
--device=/dev/mkfd \
-v /etc/vdev/vdev0.conf:/etc/vdev/docker/vdev0.conf:ro \
${docker_image:tag} \
/bin/bash
参数描述
--device表示挂载到容器内的设备
-v /etc/vdev/vdev0.conf:/etc/vdev/docker/vdev0.conf:ro将物理机的0 号vDCU 配置文件映射
到容器目录内
docker_image:tag
容器镜像名称,请替换为实际容器
镜像名称
容器镜像名称,请替换为实际容器
镜像名称

3.2.3  Kubernetes 集群内使用vDCU

 K8s 场景下,通过设备插件dcu-device-plugin-share,K8s 集群可以管理vDCU 资源。
目前只支持静态虚拟化方案,需要在DCU 节点提前划分好vDCU 实例,并给节点打上相应
资源标签。
(1).在需要划分虚拟化DCU 实例的节点(vDCU 节点),根据业务需求预设划分方式,

 并打上相应标签:

# 此项为固定标签,部署设备插件时需要查询此标签
kubectl label nodes <node-name> dcu-mode=share

(2).在vDCU 节点上部署支持虚拟化功能的vDCU Device Plugin:

kubectl apply -f k8s-dcu-plugin-share.yaml

(3).创建AI 计算任务时,需要在yaml 文件内修改如下配置:
在pod spec 字段,需要添加nodeSelector,选择所需比例的vDCU 节点标签

...
spec:
nodeSelector:
dcu-mode: share # vDCU 节点的资源标签
...

在容器配置字段,resources 设定requests 和limits 资源类型为:hygon.com/dcu- share

...
resources:
requests:
hygon.com/dcu-share: 1 # 请求的vDCU 数量,最大值为1
limits:
hygon.com/dcu-share: 1 # 数值与请求数量一致
...

3.3 销毁vDCU

 当前hy-virtual 命令行工具支持统一销毁所有vDCU,或单独指定物理卡并销毁此物理
卡上的全部vDCU。
命令格式:

hy-virtual -d ${dev_id} -destroy-vdevice
参数描述
dev_id指定物理DCU 设备号,如未指定,则默认选定所有物理卡
-destroy-vdevice销毁此物理卡上的所有vDCU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值