2
数学库
精华
海光 K100-AI-DCU 开发环境安装指南 (Ubuntu 22.04),实践出真理
2026-03-13 10:46:43
571
本指南适用于在海光 K100 双卡服务器上安装 **hyhal 驱动** 与 **DTK (DCU Toolkit)** 开发环境,本文已安装测试,主要思路是手写,后经过AI格式优化,现分享给开始入门的朋友,如有错误之处请指出。 ## 📋 前置准备 - **操作系统**: Ubuntu 22.04 LTS - **硬件**: 海光 K100 DCU 加速卡 (双卡) - **安装包**: - 驱动包: `rock-.run` (从光合社区下载对应版本) - DTK包: `dtk-*.tar.gz` (从光合社区下载对应版本) ------ ## 第一步:安装 hyhal 驱动 ### 1. 执行安装脚本 解压或直接运行驱动安装包: ```bash chmod +x rock-.run sudo ./rock-.run ``` *安装成功后,系统会在 `/opt/hyhal` 目录下生成相关文件,并加载内核模块。* ### 2. 配置环境变量 驱动安装后,工具命令(如 `hy-smi`)通常不会自动加入系统路径,需手动配置。 #### A. 临时生效(用于立即验证) ```bash source /opt/hyhal/env.sh hy-smi ``` *若显示显卡状态表格,说明驱动正常。* #### B. 永久生效(推荐) 将配置写入 `/etc/profile`,确保重启后依然有效: ```bash echo "source /opt/hyhal/env.sh" | sudo tee -a /etc/profile source /etc/profile ``` ------ ## 第二步:安装 DTK (DCU Toolkit) ### 1. 解压安装包 将下载的 DTK 压缩包解压至 `/opt` 目录(假设解压后文件夹名为 `dtk-25.04.2`,请以实际文件名为准): ```bash sudo tar -zxvf dtk-*.tar.gz -C /opt/ ``` ### 2. 配置环境变量 DTK 同样需要通过 `env.sh` 加载环境变量。 #### A. 临时生效 ```bash # 请将 dtk-25.04.2 替换为您实际的文件夹名称 source /opt/dtk-25.04.2/env.sh hipcc --version ``` *若输出版本信息,说明工具链正常。* #### B. 永久生效 ```bash # 请将 dtk-25.04.2 替换为您实际的文件夹名称 echo "source /opt/dtk-25.04.2/env.sh" | sudo tee -a /etc/profile source /etc/profile ``` ------ ## 第三步:全面验证 (重启后必做) 重启服务器后,请按顺序执行以下三项检查,确保环境完好。 ### 1. 验证驱动与硬件识别 ```bash hy-smi ``` **✅ 成功标志:** - 显示表格,列出 `HCU 0` 和 `HCU 1`。 - `Mode` 列显示 `Normal`。 - `Temp` (温度) 有正常读数 (40°C-60°C)。 > **故障排查**: > > - 若提示 `command not found`: 执行 `source /etc/profile`。 > - 若提示 `Failed to initialize`: 检查驱动模块 `lsmod | grep hyhal`,若无输出需重新安装驱动。 ### 2. 验证编译器工具链 ```bash hipcc --version ``` **✅ 成功标志:** - 输出包含 `HIP version` 和 `HSA version` 信息。 ### 3. 编译运行测试 (Hello World) 创建一个简单的 C++ 程序来验证编译器和运行时库是否工作正常。 #### A. 创建测试文件 复制以下完整代码保存为 `test_hip.cpp`: ```cpp #include #include int main() { int deviceCount = 0; hipError_t err = hipGetDeviceCount(&deviceCount); if (err == hipSuccess) { std::cout << "SUCCESS: Found " << deviceCount << " DCU device(s)." << std::endl; for (int i = 0; i < deviceCount; i++) { hipDeviceProp_t props; hipGetDeviceProperties(&props, i); std::cout << "Device " << i << ": " << props.name << std::endl; } return 0; } else { std::cerr << "FAILED: Could not find any DCU devices." << std::endl; return 1; } } ``` #### B. 编译与运行 ```bash # 编译 hipcc test_hip.cpp -o test_hip # 运行 ./test_hip ``` **✅ 最终成功标志:** - 编译无报错。 - 运行输出:`SUCCESS: Found 2 DCU device(s).` 并列出具体的设备名称(如 `DCU K100`)。 ------ ## 🚨 故障排查速查表 | 现象 | 可能原因 | 解决方法 | | ----------------------------- | ------------------ | ----------------------------------------------------- | | `hy-smi`: command not found | 环境变量未加载 | 执行 `source /etc/profile` | | `hy-smi`: 报错无法连接驱动 | 驱动模块未加载 | 执行 `sudo modprobe hyhal`;若失败请检查 `dmesg` 日志 | | `hipcc`: command not found | DTK 环境变量未加载 | 执行 `source /etc/profile` | | `hipcc`: 编译报错找不到头文件 | `env.sh` 配置有误 | 检查 `/opt/dtk-*/env.sh` 是否存在,重新 source | | `./test_hip`: 找不到设备 | 权限不足或驱动异常 | 尝试 `sudo ./test_hip`;检查 `hy-smi` 是否正常 | ------ ### 💡 提示 - **版本一致性**: 请确保下载的驱动版本与 DTK 版本在光合社区的兼容性列表中匹配。 - **多用户环境**: 上述配置方法 (`/etc/profile`) 对服务器上所有用户生效。若仅需当前用户生效,可将 `echo` 命令的目标文件改为 `~/.bashrc`。
全部评论(3)
只看楼主
C
cnuo
1楼
请问楼主有没有遇到过hy-smi显示No device available的情况呀。

5/2
C
cnuo
回复 @cnuo
lsmod | grep hyhal没有输出,博主能分享一下驱动版本吗

5/2
L
lxlhxp
回复 @cnuo
问题解决了吗?我的也是显示No device available
7/10
没有更多内容了
--
楼主
Level.2
0 帖子
楼主热帖
暂无数据