## 从零搭建国产DCU开发环境:一份写给新手的实操指南
如果你刚拿到一台搭载海光DCU的服务器,第一反应可能是:“这东西怎么用?”
这不是你一个人的困惑。国产加速卡最大的门槛从来不在硬件本身,而在于**环境怎么搭、软件怎么装、代码怎么跑**。驱动装不上、DTK版本对不上、PyTorch找不到卡——每一个坑都足以让新手劝退。
这篇文章,我把DCU环境部署的完整流程拆解出来,从硬件检查到跑通第一个模型,手把手带你走一遍。
### 一、环境部署到底要装什么?
在动手之前,先搞清楚DCU软件栈的层次结构:
- **驱动(Driver)** :最底层,让操作系统认识DCU硬件
- **DTK(DCU Toolkit)** :开发工具包,提供编译器、数学库、通信库等
- **DAS(DCU AI Software Stack)** :AI软件栈,包含PyTorch、vLLM等框架的DCU适配版
可以这样理解:驱动是“让DCU能工作”,DTK是“让开发者能编程”,DAS是“让AI模型能跑起来”。三者缺一不可。
### 二、动手前先做三件事
**第一件事:检查DCU硬件状态**
用 `lspci`命令看看DCU是否被正确识别:
```bash
lspci | grep -i Co-processor
```
正常输出应该看到类似这样的信息:
```
05:00.0 Co-processor: Chengdu C-3000 IC Design Co., Ltd. BW (rev 01)
```
**重点关注 `rev`后面的数字**:`rev 01`表示设备正常,可以继续安装;如果看到 `rev ff`,说明设备已经工作异常,需要硬重启恢复【文档1.1】。
**第二件事:检查BAR地址**
DCU支持的BAR寄存器地址在44bit以内,需要确认分配地址没有超限【文档1.1】:
```bash
lspci -vvvd 1d94:6320 | grep -i region
```
如果地址超出44bit(>=12位十六进制位),需要在BIOS中调整MMIO High Base设置【文档1.1】。
**第三件事:安装系统依赖**
不同操作系统的依赖包略有不同,以CentOS/Red Hat系为例【文档1.2】:
```bash
yum install -y pciutils policycoreutils-python yum-utils wget numactl-devel mlocate
yum install -y kernel-devel-$(uname -r) kernel-modules-extra-$(uname -r)
yum install -y automake gcc-c++ rpm-build cmake elfutils-libelf-devel
```
> ⚠️ **版本要求**:gcc需要>=7.3,cmake需要>=3.5【文档1.2】。如果系统自带版本过低,需要先升级。
### 三、安装驱动:让DCU“活”起来
**下载驱动**
从光合开发者社区下载对应型号的驱动包:
```
https://download.sourcefind.cn:65024/6/main/latest驱动
```
驱动包命名格式为 `rock-{版本号}-{包版本号}.run`,例如 `rock-6.3.28-V1.3.0b.run`【文档1.3】。
**安装驱动**
```bash
chmod +x rock-*.run
./rock-6.3.28-V1.3.0b.run
```
推荐使用 `-A`参数进行全自动安装,驱动会自动升级所有内容(驱动、配置文件、DCU VBIOS、HY Switch固件)【文档1.3】。
安装过程中会询问几个问题:
- 是否升级VBIOS?建议选 `Y`
- 是否升级HY Switch固件?选 `Y`(若升级则需要重启物理机)
- 是否需要指定互联类型?BW系列DCU支持通过 `-t`参数指定互联拓扑【文档1.3】
**验证驱动**
从6.3.*版本开始,驱动模块名称改为 `hycu`(之前叫 `hydcu`)【文档1.4】:
```bash
lsmod | grep hycu
hy-smi # 查看DCU状态
```
如果 `hy-smi`能正常显示DCU的温度、功耗、显存使用率等信息,说明驱动安装成功【文档3.3】。
> ⚠️ **版本选择小贴士**:如果打算用Ollama等工具,建议安装6.2.x以下版本(驱动标识为 `hydcu`),因为Ollama目前只识别这个标识。如果主要做AI开发,6.3.*版本功能更完整。
### 四、安装DTK:给开发者一把“钥匙”
DTK(DCU Toolkit)是DCU上的开发工具包,相当于NVIDIA的CUDA Toolkit。
**下载与解压**
```
https://download.sourcefind.cn:65024/1/main → DTK Toolkit
```
选择对应操作系统版本的压缩包下载:
```bash
tar xvf DTK-25.04.4-CentOS8.5-x86_64.tar.gz -C /opt
ln -s /opt/DTK-25.04.4 /opt/dtk # 创建软链接,方便后续版本切换
```
**配置环境变量**
方式一:直接加载脚本【文档3.2】
```bash
source /opt/dtk/env.sh
echo "source /opt/dtk/env.sh" >> ~/.bashrc
```
方式二:使用Environment Module(推荐多版本管理场景)【文档3.2】
```bash
yum install -y environment-modules
# 在/opt/dtk/下创建module文件后
module load dtk/25.04.4
```
**验证DTK**
```bash
rocminfo | grep -i gfx # 应该能看到gfx936等DCU代号
```
如果能看到DCU设备信息,说明DTK安装成功【文档3.3】。
### 五、安装DAS:让AI模型跑起来
DAS是DCU上的AI软件栈,提供了PyTorch、vLLM等框架的DCU适配版本。
**版本匹配是关键**
DAS组件的版本必须与DTK版本严格对应【文档4.2.1】。例如:
| DTK版本 | PyTorch版本 | vLLM版本 |
| ------- | ----------------------- | ----------------------- |
| 24.04.2 | 2.3.0+das.opt1.dtk24042 | 0.5.0+das.opt1.dtk24042 |
| 25.04 | 2.4.1+das.opt2.dtk2504 | 0.6.2+das.opt3.dtk2504 |
| 25.04.2 | 2.7.1+das.opt1.dtk25042 | 0.9.2+das.opt1.dtk25042 |
> ⚠️ **踩坑提醒**:不要混装不同DTK版本的包!否则会出现符号找不到、算子报错等各种诡异问题。
**安装PyTorch**
从光合开发者社区下载对应版本的wheel包:
```bash
pip install torch-2.3.0+das.opt2.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl
```
验证安装:
```python
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
# 预期输出:2.3.0 和 True
```
如果输出 `True`,说明PyTorch能正常调用DCU。
**安装vLLM(可选)**
```bash
pip install vllm-0.6.2+das.opt1.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl
python -c "import vllm; print(vllm.__version__)"
```
### 六、进阶方案:容器化部署(强烈推荐)
手动部署的坑实在太多了——依赖版本对不上、环境变量没配好、内核模块没加载……每一个问题都够折腾半天。
**强烈推荐直接用DCU容器镜像**。
光合开发者社区提供了大量预装好DTK和AI框架的Docker镜像:
```bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3
```
启动容器:
```bash
docker run -it \
--network=host \
--ipc=host \
--shm-size=64G \
--device=/dev/kfd \
--device=/dev/dri \
-v /opt/hyhal:/opt/hyhal \
--group-add video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3 \
/bin/bash
```
几个关键参数说明【文档5.1】:
- `--device=/dev/kfd`和 `--device=/dev/dri`:让容器访问DCU设备
- `--shm-size=64G`:共享内存要足够大,默认64M完全不够用
- `-v /opt/hyhal:/opt/hyhal`:挂载DTK运行时库(DTK 23.10以上版本必须)
- `--group-add video`:普通用户使用DCU需要加入video组
进入容器后直接 `hy-smi`检查DCU状态,然后就能开始跑模型了【文档5.1】。
### 七、常见问题速查
**Q:驱动装完重启后DCU不见了?**
A:检查BIOS中是否开启了 `nomodeset`启动参数。如果开启了,驱动可能无法正常加载【文档3.1】。
**Q:容器里找不到DCU?**
A:检查是否挂载了 `/opt/hyhal`目录,以及 `--device`参数是否正确。6.3.*版本驱动下,还需要挂载 `/sys/kernel/debug`路径。
**Q:`torch.cuda.is_available()`返回False?**
A:先确认 `hy-smi`能看到DCU,再确认DTK版本与PyTorch wheel包版本匹配。
**Q:驱动安装时提示 `rev ff`?**
A:设备已工作异常,需要硬重启(断电重启)恢复【文档1.1】。
### 八、总结
从零搭建DCU开发环境,核心就三步:
1. **装驱动**:让DCU硬件被系统识别
2. **装DTK**:获得开发工具和基础库
3. **装DAS**:获得AI框架支持
每一步都有版本匹配的要求——驱动版本要匹配硬件型号【文档1.3】,DTK版本要匹配驱动版本,DAS组件版本要匹配DTK版本【文档4.2.1】。任何一个环节对不上,都可能让你卡上半天。
**如果你只是想快速上手,直接走容器化路线**——拉一个官方镜像,几分钟就能拥有一个完整的DCU开发环境。等跑通了、熟悉了,再回头研究手动部署也不迟。
国产化硬件的发展确实“任重道远”,但工具链正在快速成熟。从驱动到DTK再到DAS,海光DCU的软件栈已经覆盖了从底层到上层的完整链条。剩下的,就是开发者们多踩坑、多填坑,让这条路越走越宽。