UNIT 58 / 78 · W09-1
把已会的索引和寿命映射到 HIP
本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。
时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。
先知道自己在观察什么
HIP:从 CPU 数据到一次 kernel 调用 →
逐项对照CPU输入、设备分配、上传、kernel、等待、回读和释放,标记API片段缺少的host步骤。
HIP:从 CPU 数据到一次 kernel 调用 →
打开公开HIP programming model,找到kernel启动和错误检查对应说明,记录文档版本/访问日期。
先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。
本单元另列的补授
以下时间加在原单元预算之外;完成对应读法后再进入依赖它的任务。
- HIP launch与dim3 → · 25min
先留下自己的预测或独立尝试
先画两个独立vector存储区,运行确认host=2及回读结果;明确本次只执行CPU逻辑模型。
两个存储区与回读 →源码下载与编译入口
下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →
33-a.cpp先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。
通过一个变动看清原因
在副本把输入改为[1,3,5],仍逐项加一,更新该输入的检查而保留独立存储关系。
修改后应观察到什么
host首项仍1,回读为[2,4,6];这不是HIP执行输出。
换一组条件,独立解决
为n=5的plus_one写一张完整host调用设计表,注明每步资源、返回错误处理、异步完成条件;使用公开文档逐项核对,缺少SDK时不执行或伪造日志。
用这些条件检查自己的实现
- 八个逻辑索引中0到4有效、5到7跳过;空输入由host明确处理。
- 所有资源覆盖最后一次使用;CPU通过、API阅读、SDK编译、设备执行分栏。
用证据决定是否进入下一单元
- 设备指针为什么不能按普通vector随意解引用?
- launch错误、异步执行错误和数值错误分别何时检查?
本单元的验收依据
CPU模型修改通过,host设计表有可追溯公开来源和缺失环境项;GPU-C/M/P仍未通过。
留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。