| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[feat] add asc_compile_exporter Co-authored-by: sjtulxh<liaoxiaohui3@hisilicon.com> # message auto-generated for no-merge-commit merge: !4980 merge master into master [feat] add asc_compile_exporter Created-by: sjtulxh Commit-by: sjtulxh Merged-by: cann-robot Description: ## 描述 新增 asc_compile_exporter 工具,用于收集指定目录下的 Manifest JSON 及相关资源,并将其导出为可动态加载的编译资源共享库。 主要改动: - 新增 asc_compile_exporter 命令行工具及 Manifest Bundle 生成模块。 - 支持指定包 ID、Manifest 搜索目录、输出路径、工作目录、并行任务数及临时目录保留选项。 - 增加路径合法性、符号链接、资源数量和资源大小等安全检查。 - 接入 AscendC 工具日志接口。 - 增加 CMake 构建、安装及 JSON 三方库依赖。 - 更新 asc-devkit 打包清单和版本目录软链接处理。 - 新增模块单元测试和完整导出流程测试,并接入测试集合。 ManifestBundleCompiler | +--> CollectedManifestRepository 发现并加载 Manifest +--> BuildWorkspace 管理临时构建目录 +--> BundleSourceGenerator 生成 ABI、Manifest 源码和 Makefile +--> MakeBundleBuilder 调用编译器构建 SO +--> BundlePublisher 原子发布最终 SO manifest_bundle_compiler.cpp:请求校验、任务数计算和整体流程编排,目标控制在约 100 行。 - manifest_bundle_types.h:保存内部 DTO ResourceFile、ManifestUnit,不安装、不暴露为公共 API。 - CollectedManifestRepository:Manifest 发现、JSON base_dir 读取、资源递归加载、排序和容量限制;ResourceBudget 保留为其 .cpp 内部实现。 - BundleSourceGenerator:生成 ABI 头、Manifest 翻译单元、Bundle 汇总源码和 Makefile。 - BuildWorkspace:负责私有临时目录的创建、移动语义、--keep-temp 和 RAII 清理。 - MakeBundleBuilder:查找 make/编译器、构造环境变量并启动构建;原 ExecutableLocator 收敛为其 .cpp 私有函数,不再保留独立类。 - ProcessRunner:封装 fork/execv、超时、进程组终止和退出状态处理。 - BundlePublisher:输出软链接检查、同文件系统 rename 和跨文件系统安全发布 ## 关联的Issue 无。 ## 测试 - 构建 asc_compile_exporter 生产目标,构建通过。 - 构建并运行 ascendc_ut_asc_compile_exporter。 - 共执行 22 个测试用例,全部通过。 - 验证生成的 Bundle 共享库可以正常加载并读取 Manifest 和资源。 - 执行打包 XML 格式校验,通过。 - 执行安装软链接脚本语法检查,通过。 - 执行 git diff --check,通过。 ## 文档更新 无文档更新。 ## 类型标签 - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4980 | 26 天前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
refactor(build): consolidate common build infrastructure Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5247 merge refactor/common-build-infrastructure into master refactor(build): consolidate common build infrastructure Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 修改内容 - 将 pack、register、specialization 重复使用的进程执行能力提取到 tools/build/common - 将临时目录创建与生命周期管理提取为公共 RAII 能力 - 迁移 aclrtc specialization 与 asc_compile_exporter,删除不再使用的旧实现 - 增加中文详细设计和实施文档 ## 验证 - ACLRTC UT:184/184 通过 - asc_compile_exporter UT:70/70 通过 - acl_rtc 生产构建通过 - 变更文件格式、OAT、codespell 检查通过 See merge request: cann/asc-devkit!5247 | 14 天前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
refactor(build): consolidate common build infrastructure Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5247 merge refactor/common-build-infrastructure into master refactor(build): consolidate common build infrastructure Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 修改内容 - 将 pack、register、specialization 重复使用的进程执行能力提取到 tools/build/common - 将临时目录创建与生命周期管理提取为公共 RAII 能力 - 迁移 aclrtc specialization 与 asc_compile_exporter,删除不再使用的旧实现 - 增加中文详细设计和实施文档 ## 验证 - ACLRTC UT:184/184 通过 - asc_compile_exporter UT:70/70 通过 - acl_rtc 生产构建通过 - 变更文件格式、OAT、codespell 检查通过 See merge request: cann/asc-devkit!5247 | 14 天前 | |
refactor(build): consolidate common build infrastructure Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5247 merge refactor/common-build-infrastructure into master refactor(build): consolidate common build infrastructure Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 修改内容 - 将 pack、register、specialization 重复使用的进程执行能力提取到 tools/build/common - 将临时目录创建与生命周期管理提取为公共 RAII 能力 - 迁移 aclrtc specialization 与 asc_compile_exporter,删除不再使用的旧实现 - 增加中文详细设计和实施文档 ## 验证 - ACLRTC UT:184/184 通过 - asc_compile_exporter UT:70/70 通过 - acl_rtc 生产构建通过 - 变更文件格式、OAT、codespell 检查通过 See merge request: cann/asc-devkit!5247 | 14 天前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
refactor(build): consolidate common build infrastructure Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5247 merge refactor/common-build-infrastructure into master refactor(build): consolidate common build infrastructure Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 修改内容 - 将 pack、register、specialization 重复使用的进程执行能力提取到 tools/build/common - 将临时目录创建与生命周期管理提取为公共 RAII 能力 - 迁移 aclrtc specialization 与 asc_compile_exporter,删除不再使用的旧实现 - 增加中文详细设计和实施文档 ## 验证 - ACLRTC UT:184/184 通过 - asc_compile_exporter UT:70/70 通过 - acl_rtc 生产构建通过 - 变更文件格式、OAT、codespell 检查通过 See merge request: cann/asc-devkit!5247 | 14 天前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
refactor(build): consolidate common build infrastructure Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5247 merge refactor/common-build-infrastructure into master refactor(build): consolidate common build infrastructure Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 修改内容 - 将 pack、register、specialization 重复使用的进程执行能力提取到 tools/build/common - 将临时目录创建与生命周期管理提取为公共 RAII 能力 - 迁移 aclrtc specialization 与 asc_compile_exporter,删除不再使用的旧实现 - 增加中文详细设计和实施文档 ## 验证 - ACLRTC UT:184/184 通过 - asc_compile_exporter UT:70/70 通过 - acl_rtc 生产构建通过 - 变更文件格式、OAT、codespell 检查通过 See merge request: cann/asc-devkit!5247 | 14 天前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
feat(jit): support pointer and struct tiling constants Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5719 merge feat/jit-tiling-arg-type into master feat(jit): support pointer and struct tiling constants Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 描述 JIT 常量化编译此前要求所有 constant_infos 项提供 byte_size,并与 argsBytes 严格相等,无法表达按值传递的结构体 tiling。 新增 constant_infos[].arg_type,支持 pointer 和 struct,缺省为 struct。ACLNN manifest 生成器固定输出 arg_type: pointer 和按 kernel 确定的 byte_size,不提供类型配置。pointer 常量使用 manifest 的 byte_size;struct 常量只使用 argsBytes[parameter_index],禁止在 manifest 中提供 byte_size。pack validator 和运行时均拒绝 struct 携带 byte_size。 公用 ManifestConstant 类统一 exporter 与 runtime 的 constant 字段契约。ParseDefinition 解析并校验定义,BindArgument 绑定参数地址与大小,屏蔽 pointer/struct 差异;私有成员维护解析及绑定状态,失败保留原状态,重新解析成功后清除旧绑定。错误直接记录 plog。删除 ConstantSizeRule 和自由解析入口,模块兼容 C++11,不依赖 ACLRTC。 ACLRTC 计划构建按解析和绑定两个职责封装。CompilationManifestParser 选择本次 kernel 的 basic/SK 配置,复用公用常量解析,输出持有数据的 CompilationManifest;只保留 CompilationManifest、ManifestCommand 两个解析层接口结构体。KernelCompilationPlanBuilder 直接接收解析结果,绑定常量、路径、环境和命令选项,在全部检查成功后才读取常量字节,失败不修改调用者输出。删除旧 kernel_manifest_parser、ManifestText、重复的绑定中间结构和独立组装步骤,Builder 不再接触 JSON 或判断 pointer/struct。 能力不区分 ACLNN 或尖括号来源,不添加 ACLNN 标记;两种入口均可按参数语义使用 pointer/struct。 删除未产生行为差异的 Parsed/Bound 状态,仅保留 definitionParsed_。路径与环境展开明确命名为 ExpandPathAndEnvironmentReferences,有上限的整数读取命名为 ReadBoundedNonnegativeInteger,解析和执行命令的参数字段统一为 arguments。 Builder 先绑定编译和链接命令,最后由 BuildConstantSourcePatches 完成全部常量绑定、目标展开和 patch 生成,任一步校验失败都不读取常量内存。请求侧删除 KernelCompilationVariant,使用 enableSuperKernel 表达 SK 开关;ManifestObjectKind 仅描述单个 basic/sk 对象。调整现有保护内存 UT,使其覆盖绑定阶段的命令与链接失败。 命令先按顺序展开全部 options 引用,再将首项作为 executable,其余作为 arguments。支持首项引用同时包含可执行文件及多个选项,拒绝展开后的空命令;不递归展开 options 引用。 ParseSelectedObjects 按请求选择编译对象。启用 SK 但所选 kernel 只有 basic 时记录 INFO 日志并回退普通编译,不加入 SK 专用选项;basic 缺失或已存在的 sk 配置错误仍返回失败。复用现有 UT 比较回退与 basic 模式的编译、链接命令,不增加用例数量。 保留受保护内存、非零参数索引的 pointer/struct 混合用例及解析数据所有权检查。UT 按职责收敛:字段与参数绑定校验集中在 ManifestConstant,删除 Parser/Builder/exporter 的重复校验矩阵,公共测试仅在 exporter 目标运行一次。补充状态重置、失败保留原状态和重复解析/构建的必要回归。 两个 Python producer 镜像同步修改。旧 pointer manifest 必须补充 arg_type: pointer 或重新生成。 ## 关联的Issue 暂无关联 Issue。 ## 测试 - 基于 CANN master 8668f3ffc 同步,无冲突。 - Manifest 生成器单元测试:14/14 通过。 - Exporter C++ 单元测试:80/80 通过。 - ACLRTC C++ 单元测试:192/192 通过。 - 公用 constant 测试仅在 exporter 中运行;本轮封装重构后 C++ 测试总执行数由 276 项减少至 272 项,保留整数边界、字段契约及失败输出不变等覆盖。 - ACLRTC 非 UT Release 动态库和 C++11 exporter 生产构建通过。 - 覆盖显式及缺省 struct、禁止 struct byte_size、pointer 必填 byte_size、两种大小来源、零长度和非法参数。 - 未执行 NPU 二级冒烟及算子泛化。 ## 文档更新 本 PR 不提交文档文件。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5719 | 13 小时前 | |
【fix】修复 ResourceRegistry 加载编译资源 manifest 时允许空 resource_id 的问题 Co-authored-by: huxj153<huxiujuan@huawei.com> # message auto-generated for no-merge-commit merge: !5319 merge f/issue1583 into master 【fix】修复 ResourceRegistry 加载编译资源 manifest 时允许空 resource_id 的问题 Created-by: huxj153 Commit-by: huxj153 Merged-by: cann-robot Description: ## 描述 修复 ResourceRegistry 加载编译资源 manifest 时允许空 resource_id 的问题。 同时在 tests/tools/aclrtc/test_resource_registry.cpp 中补充回归测试: - 覆盖 LoadManifest() 直接加载空 resource_id manifest 的场景,断言返回 InvalidResource 且 stage 中不包含空 key。 - 覆盖公开 Load() 加载 bundle 的场景,断言包含空 resource_id 的非法 bundle 不会提交任何资源,同时保留合法 bundle 可正常加载和查询的对照。 ## 关联的Issue 关联Issue:ResourceRegistry 加载 manifest 时缺少空 resource_id 校验 ## 测试 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [x] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5319 | 11 天前 | |
refactor(build): consolidate common build infrastructure Co-authored-by: XuebinYang<yangxuebin6@hisilicon.com> # message auto-generated for no-merge-commit merge: !5247 merge refactor/common-build-infrastructure into master refactor(build): consolidate common build infrastructure Created-by: XuebinYang Commit-by: XuebinYang Merged-by: cann-robot Description: ## 修改内容 - 将 pack、register、specialization 重复使用的进程执行能力提取到 tools/build/common - 将临时目录创建与生命周期管理提取为公共 RAII 能力 - 迁移 aclrtc specialization 与 asc_compile_exporter,删除不再使用的旧实现 - 增加中文详细设计和实施文档 ## 验证 - ACLRTC UT:184/184 通过 - asc_compile_exporter UT:70/70 通过 - acl_rtc 生产构建通过 - 变更文件格式、OAT、codespell 检查通过 See merge request: cann/asc-devkit!5247 | 14 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 26 天前 | ||
| 13 小时前 | ||
| 13 小时前 | ||
| 13 小时前 | ||
| 13 小时前 | ||
| 14 天前 | ||
| 13 小时前 | ||
| 13 小时前 | ||
| 14 天前 | ||
| 14 天前 | ||
| 13 小时前 | ||
| 14 天前 | ||
| 13 小时前 | ||
| 14 天前 | ||
| 13 小时前 | ||
| 13 小时前 | ||
| 11 天前 | ||
| 14 天前 |