一. 任务信息
- 任务名称:Task 0|环境准备
- 学习周期:第 1~3 天
- 完成时间:第 3 天结束前
- 任务状态:已完成
- 实验平台:AMD Radeon Cloud
- 参考教程:Hello GPU 第 1 章:环境准备
二. 学习目标
本次 Task 0 主要完成以下内容:
- 了解 Hello GPU 的课程结构,找到课程教程与实验环境指南。
- 确认云服务器的显卡型号、系统及 ROCm 环境。
- 完成项目依赖同步与环境激活。
- 运行教程中的最小示例,验证 GPU 计算环境。
- 保存程序成功运行的截图,并记录显卡型号与环境配置。
三. 课程结构
Hello GPU 的课程内容主要包括:
- GPU 编程与体系结构基础
- ROCm 与 HIP 开发环境
- GPU 性能分析与 Profiling
- 常见 GPU Kernel 的编写与优化
- Triton 算子开发
- GPU 算子优化 Agent
- 真实模型的部署与自动优化
四、实验环境
由于我的本地显卡是 NVIDIA GeForce RTX 3070 Ti,而课程使用的是 AMD ROCm 环境,因此本次实验使用 AMD Radeon Cloud 云服务器完成。
4.1 硬件与软件信息
| 项目 | 配置 |
|---|---|
| 实验平台 | AMD Radeon Cloud |
| GPU 型号 | AMD Radeon Pro W7900D |
| GPU 架构 | gfx1100 |
| CPU | AMD EPYC 9334 32-Core Processor |
| Python | 3.12.3 |
| uv | 0.7.6 |
| ROCm | ROCm 10.0 环境 |
| 工作目录 | /workspace |
| 项目分支 | dev |
4.2 检查环境
执行以下命令:
pwd python --version uv --version rocminfo | grep -E "Name:|Marketing Name:|Device Type:"其中 GPU 相关输出如下:
Name: gfx1100 Marketing Name: AMD Radeon Pro W7900D Vendor Name: AMD Device Type: GPU输出中出现了:
Device Type: GPU说明 ROCm 已经能够正确识别云服务器中的 AMD GPU。
五、获取课程项目
进入工作目录并下载项目:
cd /workspace git clone -b dev https://github.com/datawhalechina/hello-gpu.git进入 Task 0 对应目录:
cd /workspace/hello-gpu/code/part0-intro项目中的主要环境文件包括:
code/part0-intro/ ├── pyproject.toml ├── uv.lock ├── activate-rocm.sh └── chapter1/ ├── check_torch_rocm.py └── vector_add.hip六、同步依赖并激活环境
6.1 同步项目依赖
在code/part0-intro目录下执行:
uv syncuv会根据pyproject.toml和uv.lock自动完成以下工作:
- 创建项目虚拟环境
.venv - 安装 ROCm 版 PyTorch
- 安装 ROCm SDK
- 安装 gfx1100 对应的设备依赖
- 安装 HIP 开发组件
- 同步项目所需的其他 Python 包
不需要提前手动创建虚拟环境,也不需要单独执行:
pip install torch6.2 激活 ROCm 环境
依赖同步完成后执行:
source ./activate-rocm.sh激活脚本会设置项目虚拟环境以及ROCM_PATH、HIP_PATH等环境变量。
检查 ROCm SDK 和 HIP 编译器:
rocm-sdk version hipcc --version七、运行最小示例
7.1 验证 PyTorch ROCm
运行课程提供的 PyTorch 检查脚本:
python chapter1/check_torch_rocm.py该脚本主要完成以下检查:
- 导入 PyTorch。
- 检查 GPU 后端是否可用。
- 获取 GPU 数量和设备名称。
- 在 GPU 上创建矩阵。
- 执行一次矩阵乘法。
- 输出计算结果所在设备。
重点关注以下信息:
cuda_available: True device_count: 1 device_name: AMD Radeon Pro W7900D result_device: cuda:0虽然 ROCm 使用的是 AMD GPU,但 PyTorch 仍然沿用torch.cuda和cuda:0作为 GPU 接口名称。这只是 PyTorch 的历史命名方式,并不代表程序使用了 NVIDIA CUDA。
7.2 编译 HIP 最小示例
进入示例目录:
cd chapter1使用hipcc编译向量加法程序:
hipcc vector_add.hip -O2 -o vector_add运行程序:
./vector_add程序完成了以下流程:
CPU 准备输入数据 ↓ 申请 GPU 显存 ↓ 将数据复制到 GPU ↓ 启动 HIP Kernel ↓ 将结果复制回 CPU ↓ 检查计算结果运行成功后,重点检查:
max_error: 0 status: PASS其中:
max_error: 0表示计算结果没有误差。status: PASS表示 HIP Kernel 编译、启动、计算和数据传输均正常。
八、运行结果截图
九、学习总结
通过本次 Task 0,我完成了 Hello GPU 项目的基础环境准备,主要掌握了以下内容:
- 了解了课程的整体结构和实验环境要求。
- 学会了通过
rocminfo查看 AMD GPU 型号及架构。 - 学会了根据实际 GPU 架构修改 ROCm 设备依赖。
- 使用
uv完成了项目依赖同步和虚拟环境创建。 - 成功激活 ROCm 10.0 项目环境。
- 使用 PyTorch 完成了 GPU 矩阵计算验证。
- 使用
hipcc编译并运行了最小 HIP 向量加法程序。 - 本次环境验证结果如下:
至此,Hello GPU 的基础开发环境已经准备完成,可以继续学习后续的 GPU 体系结构、性能分析和 Kernel 优化内容。
十、参考资料
- Hello GPU 项目主页
- 第 1 章:环境准备
- 附录 B:切换 ROCm GPU 架构
- Hello GPU GitHub 仓库
- AMD ROCm 官方文档
- uv 官方文档