| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】:新增 Kernel 二进制与函数元数据内省样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4904 merge example/2_advanced_features/kernel/7_binary_introspection into master 【PR】:新增 Kernel 二进制与函数元数据内省样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Runtime7 单 Device 样例 example/2_advanced_features/kernel/7_binary_introspection,展示自定义 Ascend C Kernel 二进制在加载后的元数据内省和有效性验证: - 从 Host 内存创建并加载 Kernel Binary,完成 Binary 的创建、加载、卸载和销毁闭环。 - 按名称获取 Function,校验 Function 反查所属 Binary,并查询 Kernel 参数数量、偏移和大小。 - 查询 AI Core/Vector Core 代码段大小、每个 Block 的可用动态 UB,以及 Binary 在 Device 上的地址和大小。 - 在 Kernel 中定义具名 Device 全局变量,通过写入后读回探测值验证查询到的地址有效。 - 新增 CMake/Ascend C 构建、run.sh、中英文 README,并更新 Kernel 主题中英文导航。 本样例新增覆盖以下 10 个 Runtime API: - aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetDevAddress、aclrtBinaryGetGlobal - aclrtFunctionGetBinary、aclrtFunctionGetParamCount、aclrtFunctionGetParamInfo - aclrtGetFunctionSize、aclrtFunctionGetAvailDynUbufPerBlock、aclrtDestroyBinary ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - 硬件:Atlas A3,SoC Ascend910_9362。 - CANN:9.2.0-weekly.20260909.01,toolkit/A3 ops 内部版本 V100R001C12B106。 - 编译器:GCC/G++ 13.3.0,CANN 配套 BiSheng 编译器。 1. 配置环境并运行样例: bash source /home/developer/Ascend/cann/set_env.sh source /mnt/workspace/runtime/example/set_sample_env.sh cd /mnt/workspace/runtime/example/2_advanced_features/kernel/7_binary_introspection bash run.sh 2. 验证结果: - Host 可执行文件与 Ascend C Kernel 二进制编译、安装和运行成功,样例返回码为 0。 - 从 Host 内存加载 47456 字节 Kernel Binary。 - 查询到 3 个 Kernel 参数,偏移/大小分别为 0/8、8/8、16/4。 - 代码段查询结果为 aic=0 bytes, aiv=168 bytes,动态 UB 为 0 字节。 - Binary Device 镜像大小为 4356 字节。 - 具名全局变量 g_binary_metadata_value 大小为 256 字节,写入并读回 0x13572468 成功。 - 输出 Run the 7_binary_introspection sample successfully.。 3. 静态检查: bash git diff --check upstream/master...HEAD bash -n example/2_advanced_features/kernel/7_binary_introspection/run.sh 上述检查均通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格(待处理 clang-format --dry-run --Werror 检查结果) - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 - clang-format --dry-run --Werror 当前报告 main.cpp 中的日志/aclrtMemcpy 调用换行和 binary_introspection_kernel.cpp 函数声明不符合格式,需在提交 PR 前完成格式化并重新检查。 - 本样例同时使用 aclrtBinaryGetFunction、aclrtBinaryUnLoad、aclrtMemcpy 等配套 API 完成场景闭环,不将其重复计入本次 API 覆盖增量。 See merge request: cann/runtime!4904 | 23 天前 | |
【PR】:新增 Kernel 二进制与函数元数据内省样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4904 merge example/2_advanced_features/kernel/7_binary_introspection into master 【PR】:新增 Kernel 二进制与函数元数据内省样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Runtime7 单 Device 样例 example/2_advanced_features/kernel/7_binary_introspection,展示自定义 Ascend C Kernel 二进制在加载后的元数据内省和有效性验证: - 从 Host 内存创建并加载 Kernel Binary,完成 Binary 的创建、加载、卸载和销毁闭环。 - 按名称获取 Function,校验 Function 反查所属 Binary,并查询 Kernel 参数数量、偏移和大小。 - 查询 AI Core/Vector Core 代码段大小、每个 Block 的可用动态 UB,以及 Binary 在 Device 上的地址和大小。 - 在 Kernel 中定义具名 Device 全局变量,通过写入后读回探测值验证查询到的地址有效。 - 新增 CMake/Ascend C 构建、run.sh、中英文 README,并更新 Kernel 主题中英文导航。 本样例新增覆盖以下 10 个 Runtime API: - aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetDevAddress、aclrtBinaryGetGlobal - aclrtFunctionGetBinary、aclrtFunctionGetParamCount、aclrtFunctionGetParamInfo - aclrtGetFunctionSize、aclrtFunctionGetAvailDynUbufPerBlock、aclrtDestroyBinary ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - 硬件:Atlas A3,SoC Ascend910_9362。 - CANN:9.2.0-weekly.20260909.01,toolkit/A3 ops 内部版本 V100R001C12B106。 - 编译器:GCC/G++ 13.3.0,CANN 配套 BiSheng 编译器。 1. 配置环境并运行样例: bash source /home/developer/Ascend/cann/set_env.sh source /mnt/workspace/runtime/example/set_sample_env.sh cd /mnt/workspace/runtime/example/2_advanced_features/kernel/7_binary_introspection bash run.sh 2. 验证结果: - Host 可执行文件与 Ascend C Kernel 二进制编译、安装和运行成功,样例返回码为 0。 - 从 Host 内存加载 47456 字节 Kernel Binary。 - 查询到 3 个 Kernel 参数,偏移/大小分别为 0/8、8/8、16/4。 - 代码段查询结果为 aic=0 bytes, aiv=168 bytes,动态 UB 为 0 字节。 - Binary Device 镜像大小为 4356 字节。 - 具名全局变量 g_binary_metadata_value 大小为 256 字节,写入并读回 0x13572468 成功。 - 输出 Run the 7_binary_introspection sample successfully.。 3. 静态检查: bash git diff --check upstream/master...HEAD bash -n example/2_advanced_features/kernel/7_binary_introspection/run.sh 上述检查均通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格(待处理 clang-format --dry-run --Werror 检查结果) - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 - clang-format --dry-run --Werror 当前报告 main.cpp 中的日志/aclrtMemcpy 调用换行和 binary_introspection_kernel.cpp 函数声明不符合格式,需在提交 PR 前完成格式化并重新检查。 - 本样例同时使用 aclrtBinaryGetFunction、aclrtBinaryUnLoad、aclrtMemcpy 等配套 API 完成场景闭环,不将其重复计入本次 API 覆盖增量。 See merge request: cann/runtime!4904 | 23 天前 | |
【PR】:新增 Kernel 二进制与函数元数据内省样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4904 merge example/2_advanced_features/kernel/7_binary_introspection into master 【PR】:新增 Kernel 二进制与函数元数据内省样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Runtime7 单 Device 样例 example/2_advanced_features/kernel/7_binary_introspection,展示自定义 Ascend C Kernel 二进制在加载后的元数据内省和有效性验证: - 从 Host 内存创建并加载 Kernel Binary,完成 Binary 的创建、加载、卸载和销毁闭环。 - 按名称获取 Function,校验 Function 反查所属 Binary,并查询 Kernel 参数数量、偏移和大小。 - 查询 AI Core/Vector Core 代码段大小、每个 Block 的可用动态 UB,以及 Binary 在 Device 上的地址和大小。 - 在 Kernel 中定义具名 Device 全局变量,通过写入后读回探测值验证查询到的地址有效。 - 新增 CMake/Ascend C 构建、run.sh、中英文 README,并更新 Kernel 主题中英文导航。 本样例新增覆盖以下 10 个 Runtime API: - aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetDevAddress、aclrtBinaryGetGlobal - aclrtFunctionGetBinary、aclrtFunctionGetParamCount、aclrtFunctionGetParamInfo - aclrtGetFunctionSize、aclrtFunctionGetAvailDynUbufPerBlock、aclrtDestroyBinary ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - 硬件:Atlas A3,SoC Ascend910_9362。 - CANN:9.2.0-weekly.20260909.01,toolkit/A3 ops 内部版本 V100R001C12B106。 - 编译器:GCC/G++ 13.3.0,CANN 配套 BiSheng 编译器。 1. 配置环境并运行样例: bash source /home/developer/Ascend/cann/set_env.sh source /mnt/workspace/runtime/example/set_sample_env.sh cd /mnt/workspace/runtime/example/2_advanced_features/kernel/7_binary_introspection bash run.sh 2. 验证结果: - Host 可执行文件与 Ascend C Kernel 二进制编译、安装和运行成功,样例返回码为 0。 - 从 Host 内存加载 47456 字节 Kernel Binary。 - 查询到 3 个 Kernel 参数,偏移/大小分别为 0/8、8/8、16/4。 - 代码段查询结果为 aic=0 bytes, aiv=168 bytes,动态 UB 为 0 字节。 - Binary Device 镜像大小为 4356 字节。 - 具名全局变量 g_binary_metadata_value 大小为 256 字节,写入并读回 0x13572468 成功。 - 输出 Run the 7_binary_introspection sample successfully.。 3. 静态检查: bash git diff --check upstream/master...HEAD bash -n example/2_advanced_features/kernel/7_binary_introspection/run.sh 上述检查均通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格(待处理 clang-format --dry-run --Werror 检查结果) - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 - clang-format --dry-run --Werror 当前报告 main.cpp 中的日志/aclrtMemcpy 调用换行和 binary_introspection_kernel.cpp 函数声明不符合格式,需在提交 PR 前完成格式化并重新检查。 - 本样例同时使用 aclrtBinaryGetFunction、aclrtBinaryUnLoad、aclrtMemcpy 等配套 API 完成场景闭环,不将其重复计入本次 API 覆盖增量。 See merge request: cann/runtime!4904 | 23 天前 | |
【PR】:新增 Kernel 二进制与函数元数据内省样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4904 merge example/2_advanced_features/kernel/7_binary_introspection into master 【PR】:新增 Kernel 二进制与函数元数据内省样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Runtime7 单 Device 样例 example/2_advanced_features/kernel/7_binary_introspection,展示自定义 Ascend C Kernel 二进制在加载后的元数据内省和有效性验证: - 从 Host 内存创建并加载 Kernel Binary,完成 Binary 的创建、加载、卸载和销毁闭环。 - 按名称获取 Function,校验 Function 反查所属 Binary,并查询 Kernel 参数数量、偏移和大小。 - 查询 AI Core/Vector Core 代码段大小、每个 Block 的可用动态 UB,以及 Binary 在 Device 上的地址和大小。 - 在 Kernel 中定义具名 Device 全局变量,通过写入后读回探测值验证查询到的地址有效。 - 新增 CMake/Ascend C 构建、run.sh、中英文 README,并更新 Kernel 主题中英文导航。 本样例新增覆盖以下 10 个 Runtime API: - aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetDevAddress、aclrtBinaryGetGlobal - aclrtFunctionGetBinary、aclrtFunctionGetParamCount、aclrtFunctionGetParamInfo - aclrtGetFunctionSize、aclrtFunctionGetAvailDynUbufPerBlock、aclrtDestroyBinary ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - 硬件:Atlas A3,SoC Ascend910_9362。 - CANN:9.2.0-weekly.20260909.01,toolkit/A3 ops 内部版本 V100R001C12B106。 - 编译器:GCC/G++ 13.3.0,CANN 配套 BiSheng 编译器。 1. 配置环境并运行样例: bash source /home/developer/Ascend/cann/set_env.sh source /mnt/workspace/runtime/example/set_sample_env.sh cd /mnt/workspace/runtime/example/2_advanced_features/kernel/7_binary_introspection bash run.sh 2. 验证结果: - Host 可执行文件与 Ascend C Kernel 二进制编译、安装和运行成功,样例返回码为 0。 - 从 Host 内存加载 47456 字节 Kernel Binary。 - 查询到 3 个 Kernel 参数,偏移/大小分别为 0/8、8/8、16/4。 - 代码段查询结果为 aic=0 bytes, aiv=168 bytes,动态 UB 为 0 字节。 - Binary Device 镜像大小为 4356 字节。 - 具名全局变量 g_binary_metadata_value 大小为 256 字节,写入并读回 0x13572468 成功。 - 输出 Run the 7_binary_introspection sample successfully.。 3. 静态检查: bash git diff --check upstream/master...HEAD bash -n example/2_advanced_features/kernel/7_binary_introspection/run.sh 上述检查均通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格(待处理 clang-format --dry-run --Werror 检查结果) - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 - clang-format --dry-run --Werror 当前报告 main.cpp 中的日志/aclrtMemcpy 调用换行和 binary_introspection_kernel.cpp 函数声明不符合格式,需在提交 PR 前完成格式化并重新检查。 - 本样例同时使用 aclrtBinaryGetFunction、aclrtBinaryUnLoad、aclrtMemcpy 等配套 API 完成场景闭环,不将其重复计入本次 API 覆盖增量。 See merge request: cann/runtime!4904 | 23 天前 | |
【PR】:新增 Kernel 二进制与函数元数据内省样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4904 merge example/2_advanced_features/kernel/7_binary_introspection into master 【PR】:新增 Kernel 二进制与函数元数据内省样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Runtime7 单 Device 样例 example/2_advanced_features/kernel/7_binary_introspection,展示自定义 Ascend C Kernel 二进制在加载后的元数据内省和有效性验证: - 从 Host 内存创建并加载 Kernel Binary,完成 Binary 的创建、加载、卸载和销毁闭环。 - 按名称获取 Function,校验 Function 反查所属 Binary,并查询 Kernel 参数数量、偏移和大小。 - 查询 AI Core/Vector Core 代码段大小、每个 Block 的可用动态 UB,以及 Binary 在 Device 上的地址和大小。 - 在 Kernel 中定义具名 Device 全局变量,通过写入后读回探测值验证查询到的地址有效。 - 新增 CMake/Ascend C 构建、run.sh、中英文 README,并更新 Kernel 主题中英文导航。 本样例新增覆盖以下 10 个 Runtime API: - aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetDevAddress、aclrtBinaryGetGlobal - aclrtFunctionGetBinary、aclrtFunctionGetParamCount、aclrtFunctionGetParamInfo - aclrtGetFunctionSize、aclrtFunctionGetAvailDynUbufPerBlock、aclrtDestroyBinary ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - 硬件:Atlas A3,SoC Ascend910_9362。 - CANN:9.2.0-weekly.20260909.01,toolkit/A3 ops 内部版本 V100R001C12B106。 - 编译器:GCC/G++ 13.3.0,CANN 配套 BiSheng 编译器。 1. 配置环境并运行样例: bash source /home/developer/Ascend/cann/set_env.sh source /mnt/workspace/runtime/example/set_sample_env.sh cd /mnt/workspace/runtime/example/2_advanced_features/kernel/7_binary_introspection bash run.sh 2. 验证结果: - Host 可执行文件与 Ascend C Kernel 二进制编译、安装和运行成功,样例返回码为 0。 - 从 Host 内存加载 47456 字节 Kernel Binary。 - 查询到 3 个 Kernel 参数,偏移/大小分别为 0/8、8/8、16/4。 - 代码段查询结果为 aic=0 bytes, aiv=168 bytes,动态 UB 为 0 字节。 - Binary Device 镜像大小为 4356 字节。 - 具名全局变量 g_binary_metadata_value 大小为 256 字节,写入并读回 0x13572468 成功。 - 输出 Run the 7_binary_introspection sample successfully.。 3. 静态检查: bash git diff --check upstream/master...HEAD bash -n example/2_advanced_features/kernel/7_binary_introspection/run.sh 上述检查均通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格(待处理 clang-format --dry-run --Werror 检查结果) - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 - clang-format --dry-run --Werror 当前报告 main.cpp 中的日志/aclrtMemcpy 调用换行和 binary_introspection_kernel.cpp 函数声明不符合格式,需在提交 PR 前完成格式化并重新检查。 - 本样例同时使用 aclrtBinaryGetFunction、aclrtBinaryUnLoad、aclrtMemcpy 等配套 API 完成场景闭环,不将其重复计入本次 API 覆盖增量。 See merge request: cann/runtime!4904 | 23 天前 | |
【PR】:新增 Kernel 二进制与函数元数据内省样例 Co-authored-by: 2403_89963296<2540257541@qq.com> # message auto-generated for no-merge-commit merge: !4904 merge example/2_advanced_features/kernel/7_binary_introspection into master 【PR】:新增 Kernel 二进制与函数元数据内省样例 Created-by: 2403_89963296 Commit-by: 2403_89963296 Merged-by: cann-robot Description: # Pull Request ## 描述 新增 Runtime7 单 Device 样例 example/2_advanced_features/kernel/7_binary_introspection,展示自定义 Ascend C Kernel 二进制在加载后的元数据内省和有效性验证: - 从 Host 内存创建并加载 Kernel Binary,完成 Binary 的创建、加载、卸载和销毁闭环。 - 按名称获取 Function,校验 Function 反查所属 Binary,并查询 Kernel 参数数量、偏移和大小。 - 查询 AI Core/Vector Core 代码段大小、每个 Block 的可用动态 UB,以及 Binary 在 Device 上的地址和大小。 - 在 Kernel 中定义具名 Device 全局变量,通过写入后读回探测值验证查询到的地址有效。 - 新增 CMake/Ascend C 构建、run.sh、中英文 README,并更新 Kernel 主题中英文导航。 本样例新增覆盖以下 10 个 Runtime API: - aclrtCreateBinary、aclrtBinaryLoad、aclrtBinaryGetDevAddress、aclrtBinaryGetGlobal - aclrtFunctionGetBinary、aclrtFunctionGetParamCount、aclrtFunctionGetParamInfo - aclrtGetFunctionSize、aclrtFunctionGetAvailDynUbufPerBlock、aclrtDestroyBinary ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 如何测试 测试环境: - 硬件:Atlas A3,SoC Ascend910_9362。 - CANN:9.2.0-weekly.20260909.01,toolkit/A3 ops 内部版本 V100R001C12B106。 - 编译器:GCC/G++ 13.3.0,CANN 配套 BiSheng 编译器。 1. 配置环境并运行样例: bash source /home/developer/Ascend/cann/set_env.sh source /mnt/workspace/runtime/example/set_sample_env.sh cd /mnt/workspace/runtime/example/2_advanced_features/kernel/7_binary_introspection bash run.sh 2. 验证结果: - Host 可执行文件与 Ascend C Kernel 二进制编译、安装和运行成功,样例返回码为 0。 - 从 Host 内存加载 47456 字节 Kernel Binary。 - 查询到 3 个 Kernel 参数,偏移/大小分别为 0/8、8/8、16/4。 - 代码段查询结果为 aic=0 bytes, aiv=168 bytes,动态 UB 为 0 字节。 - Binary Device 镜像大小为 4356 字节。 - 具名全局变量 g_binary_metadata_value 大小为 256 字节,写入并读回 0x13572468 成功。 - 输出 Run the 7_binary_introspection sample successfully.。 3. 静态检查: bash git diff --check upstream/master...HEAD bash -n example/2_advanced_features/kernel/7_binary_introspection/run.sh 上述检查均通过。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格(待处理 clang-format --dry-run --Werror 检查结果) - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于 commit message 的格式、无效 commit 的合并等 ## 其他信息 - clang-format --dry-run --Werror 当前报告 main.cpp 中的日志/aclrtMemcpy 调用换行和 binary_introspection_kernel.cpp 函数声明不符合格式,需在提交 PR 前完成格式化并重新检查。 - 本样例同时使用 aclrtBinaryGetFunction、aclrtBinaryUnLoad、aclrtMemcpy 等配套 API 完成场景闭环,不将其重复计入本次 API 覆盖增量。 See merge request: cann/runtime!4904 | 23 天前 |
7_binary_introspection
描述
本样例面向需要在加载后检查自定义 Kernel 元数据的单 Device 应用。样例从 Host 内存创建并加载一个包含具名 Device 全局变量的 Ascend C Kernel 二进制,验证 Binary 与 Function 的关联关系、函数参数布局、AI Core/Vector Core 代码段大小、动态 UB 大小和二进制 Device 地址,并通过写入后读回的方式校验全局变量地址有效。
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
编译运行
- 下载样例代码至安装 CANN 软件的环境,切换到样例目录。
cd ${git_clone_path}/example/2_advanced_features/kernel/7_binary_introspection
- 设置环境变量。
# ${install_root} 替换为 CANN 安装根目录
source ${install_root}/set_env.sh
source ${git_clone_path}/example/set_sample_env.sh
- 编译并运行样例。
bash run.sh
CANN RUNTIME API
在该Sample中,涉及的关键功能点及其关键接口,如下所示:
- 初始化与去初始化
- 调用
aclInit接口进行初始化配置。 - 调用
aclFinalize接口实现去初始化。
- 调用
- Device 管理
- 调用
aclrtSetDevice接口指定加载二进制的 Device。 - 调用
aclrtResetDeviceForce接口复位 Device 并回收相关资源。
- 调用
- Binary 生命周期
- 调用
aclrtCreateBinary接口使用 Host 内存中的二进制数据创建描述对象。 - 调用
aclrtBinaryLoad接口解析二进制并加载到当前 Context 对应的 Device。 - 调用
aclrtBinaryUnLoad接口在同一 Context 中卸载二进制。 - 调用
aclrtDestroyBinary接口销毁 Binary 描述对象;原始 Host 内存仍由应用管理。
- 调用
- Binary 元数据
- 调用
aclrtBinaryGetDevAddress接口获取已加载二进制的 Device 地址和大小。 - 调用
aclrtBinaryGetGlobal接口按名称获取 Device 全局变量地址和大小。
- 调用
- Function 元数据
- 调用
aclrtBinaryGetFunction接口按名称获取 Kernel 函数句柄。 - 调用
aclrtFunctionGetBinary接口从函数句柄反查所属 Binary。 - 调用
aclrtFunctionGetParamCount接口查询 Kernel 参数数量。 - 调用
aclrtFunctionGetParamInfo接口逐项查询参数偏移和大小。 - 调用
aclrtGetFunctionSize接口查询 AI Core 和 Vector Core 代码段大小。 - 调用
aclrtFunctionGetAvailDynUbufPerBlock接口查询每个 Block 的可用动态 UB;本样例使用非 SIMT Kernel,预期返回 0。
- 调用
- 全局变量验证
- 调用
aclrtMemcpy接口向全局变量写入探测值并读回校验。
- 调用
示例输出
[INFO] Start to run the 7_binary_introspection sample.
[INFO] Loaded ... binary bytes from Host memory.
[INFO] Parameter[0]: offset=0, size=8.
[INFO] Parameter[1]: offset=8, size=8.
[INFO] Parameter[2]: offset=16, size=4.
[INFO] Function code size: aic=... bytes, aiv=... bytes; dynamic UB=0 bytes.
[INFO] Binary Device image: address=..., size=... bytes.
[INFO] Verified Device global g_binary_metadata_value: size=... bytes, value=0x13572468.
[INFO] Run the 7_binary_introspection sample successfully.