| 【PR】: runtime support launch blocking Co-authored-by: nevermore_t<tianjingxuan2@huawei.com> Co-authored-by: x00508183<xiachanglin@huawei.com> Co-authored-by: jiaxingru<jiaxingru1@huawei.com> # message auto-generated for no-merge-commit merge: !4247 merge feature/launch-blocking into master 【PR】: runtime support launch blocking Created-by: xiachanglin Commit-by: x00508183;jiaxingru;nevermore_t Merged-by: cann-robot Description: # Pull Request ## 描述 本需求提供一种面向调试场景的 blocking launch 能力,使用户在启动程序前设置环境变量后,Runtime 将纳入范围的 kernel/model launch 从“下发后立即返回”改为“下发后等待执行完成再返回”。这样执行错误在当前 launch API 返回,帮助用户定位问题算子。 新增环境变量: ASCEND_RT_LAUNCH_BLOCKING,默认不打开该环境变量时,Runtime 保持原有异步 launch 行为。当 ASCEND_RT_LAUNCH_BLOCKING=1 Runtime 对纳入范围的 kernel/model launch 执行做如下增强: 1. 先按原有流程完成任务下发。 2. 如果任务下发失败,直接返回原 launch 错误,不额外同步。 3. 如果任务下发成功,根据 stream 状态、no-blocking 逃生状态和环境变量判断是否需要同步。 4. 需要同步时,等待该 stream 当前已下发任务执行完成,再从当前 launch API 返回。 该功能的目标是调试定位。 涉及API: aclrtLaunchKernel、aclrtLaunchKernelWithConfig、aclrtLaunchKernelV2 aclrtLaunchKernelWithHostArgs、aclrtLaunchKernelWithArgsArray 、aclrtLaunchSIMTKernelWithArgsArray、aclrtLaunchSIMTKernelWithHostArgs aclmdlRIExecuteAsync ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> https://gitcode.com/cann/runtime/issues/921 ## 如何测试 描述测试此变更的步骤和前提条件: 1. UT 2. ST 3. rdv ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4247 | 1 天前 |