| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(cmake): 支持Kernel Spec资源随RUN包构建、交付和加载 Co-authored-by: zhangyujia77<zhangyujia37@huawei.com> # message auto-generated for no-merge-commit merge: !6521 merge feat/jit-cmake-kernel-spec into master feat(cmake): 支持Kernel Spec资源随RUN包构建、交付和加载 Created-by: zhangyujia77 Commit-by: zhangyujia77 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 现有算子工程缺少将Kernel Spec编译资源聚合并随RUN包交付的完整流程。本PR增加包级配置,串联编译、manifest生成、资源聚合、打包安装和ACLRTC资源发现,使安装后的算子源码和特化资源能够配套使用。 - 新增 KERNEL_SPEC_MODE=None|Normal|SK,默认None。开启时要求使用RUN包,并同时启用源码和binary打包;配置沿现有编译入口传递至OPC,relocatable编译跳过spec资源生成。 - 编译阶段生成manifest、资源文件和producer结果记录。Resource ID加入目标SoC信息,避免不同芯片资源错误去重。 - 生成manifest时将可映射的include路径转换为${source_file_path}占位符,由ACLRTC依据安装后的源码目录解析;无法映射的外部include路径发出warning并跳过该manifest。 - 聚合阶段检查producer结果、绑定安装后的source_file路径,调用exporter生成libcust_compile_resource.so。保留内容缓存,成功后发布资源SO及安装入口,避免失败构建安装旧结果。 - RUN包通过op_spec目录交付资源SO,安装和升级时同步更新或清理旧资源。ACLRTC支持新安装布局并保留原有布局,重复Resource ID保留首个有效资源。 npu_op_package_add的KERNEL库选择规则:单次传入多个KERNEL target时发出warning,仅最后一个生效;开启spec时禁止跨次添加KERNEL库;关闭spec时保持原有跨次添加行为。Host库与KERNEL库可以分次添加。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6521 | 4 天前 | |
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 | 1 个月前 | |
acl_rt_compile.h头文件目录结构与run包中对齐 Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !4637 merge 20260727-support-gaf-superbuild into master acl_rt_compile.h头文件目录结构与run包中对齐 Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: ## 描述 acl_rt_compile.h头文件目录结构与run包中对齐。 - acl_rtc导出头文件搜索路径,支持多仓联编时上层组件引用 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [x] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4637 | 3 个月前 |