| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fxrt: register the test case, fix and clean some arch Co-authored-by: chenhaozhe<chenhaozhe1@huawei.com> # message auto-generated for no-merge-commit merge: !47686 merge fxrt-ci-test-selection into master fxrt: register the test case, fix and clean some arch Created-by: c_34 Commit-by: chenhaozhe Merged-by: ascend-robot Description: # 【合入来源】 - [x] 重构优化 https://gitcode.com/Ascend/pytorch/issues/5278 对应 fxrt 架构清理 tracking issue 的 P0 阶段(正确性与对外接口面)。两项 P0 有意不含: - **P0-5**(CPU 平台符号算子与张量算子同名冲突)动作待定,需随 P1-2 的声明式算子表一并定性; - **P0-4**(跨内存池的死接口)目前无人调用,不引入中间态,留待与资源池整合一并修改。 # 【修改方案】 1. **把 fxrt 用例接入门禁**。改 fxrt/ 下的文件此前只会选中 test/npu 核心用例集,test/fxrt 从不被 PR 选中,用例只在手动传 --all 时才跑 —— 构建侧一直带着 fxrt,看起来「CI 覆盖了」,实际是选取侧从未把用例挑出来。新增 ci/access_control/strategy/fxrt.py,把顶层 fxrt/ 的改动映射到 test/fxrt。没有扩展 DirectoryMappingStrategy,因为它只处理 torch_npu/ 下的路径,且 get_module_name() 取 parts[1],对 fxrt/CMakeLists.txt 这类路径命不中。用 glob 而非写死文件名,后续在 test/fxrt/ 加用例无需再改这里。 2. **logger.h 的 vector 流输出收进 fxrt::common** —— 本 PR 唯一影响 fxrt 之外的改动。它原先定义在**全局命名空间**,被 40 个 TU include,而 fxrt 与 torch_npu 链入同一进程,于是进程内任何地方对 std::vector 做流式输出都可能让这个重载参与重载决议。移入命名空间后放在 LogStream 之前,LogStream 同在该命名空间、靠普通查找即可找到,因此 RT_GLOG/RT_VLOG 继续接受 vector,无需改任何调用点。同时把 std::to_string(vec[i]) 改为 os << vec[i],解除「T 必须是算术类型」的隐式限制 —— std::to_string 没有 std::string 重载,旧实现对 std::vector<std::string> 直接实例化失败。 3. **删除 depend / load / update_state 三个不可达算子**。它们是上游 functional IR 的副作用排序原语,FX 没有对应概念,无下降路径、无 kernel 实现,图里不可能出现这类节点。其中 depend 与 update_state 仍在 op_support 白名单里,使 CheckOpSupport 对它们返回 kOk 而运行期无 kernel,把错误推迟到 CreateOperator 且错误信息与真实原因无关。删 ops.list 条目会一并带走 Op 枚举值,故运行时派发表中的对应项同步删除:runtime/utils/utils.cpp 的 opsOutputFromInputIndex 三条与 dummyOpsSet 的 Op_depend,utils.h 的 IsSkipRecordRefCount 收敛为只判 Op_End(语义等价,因为那两类节点不可能存在)。 4. **清掉上游工程名残留,DA_API 合入 FXRT_EXPORT**。两个宏在 Linux 下展开完全相同(均为 __attribute__((visibility("default")))),DA_API 的 51 处用法改为 FXRT_EXPORT。**两个宏的 Windows 分支均保留**,以维持头文件的可移植性。view_utils.h 因宏变长导致两处声明超列宽,用仓库 .clang-format 重排。 建议审阅顺序即上列顺序:1 独立;2 影响面最大,先看;3、4 是收口动作,彼此独立。 # 【资料变更】 不涉及。 需要说明的是 DART_KERNEL_LIB_PATH 这个环境变量在 fxrt/README.md 与 README_CN.md 的环境变量表中**原本就未收录**,本 PR 未补。若认为它应当对外可见,可另起一个资料补充。 # 【接口变更】 涉及,共四项,均在 fxrt 内部或尚无使用者: | 接口 | 变更 | 兼容处理 | | --- | --- | --- | | 环境变量 DART_KERNEL_LIB_PATH | 改名 FXRT_KERNEL_LIB_PATH | **旧名保留一个版本**,命中时打 WARNING 后照常生效 | | 注册宏 DART_REGISTER_KERNEL_LIB | 改名 FXRT_REGISTER_KERNEL_LIB | 直接改,无兼容别名 —— 已核实仓内外零使用者 | | 导出宏 DA_API | 删除,并入 FXRT_EXPORT | Linux 下展开相同,无影响;Windows 下见下方说明 | | Python _fxrt_ir.Op 枚举 | 少 depend / load / update_state 三个值 | 无需兼容,已核实无任何使用者 | # 【功能验证】 Ascend 910B3 实测。 **构建与门禁** | 项 | 结果 | | --- | --- | | ninja install_fxrt 增量构建 | EXIT=0,零 error、零 undefined reference | | 全部 239 个 fxrt TU -fsyntax-only(取 compile_commands.json 的真实编译参数) | 0 error | | test/fxrt | 7 passed | | lintrunner(按 CI 命令,全部改动文件) | ok No lint issues | **用例选取(改动 1)** —— 直接驱动 TestMgr.analyze() 与 estimate_core_select_tasks,四个场景: | 场景 | 选中 | core 任务 | select 任务 | fxrt 用例 | | --- | --- | --- | --- | --- | | fxrt PR | 106 | 1 | **1** | test_fxrt_basic.py、test_fxrt_register_fx_wrapper.py | | 非 fxrt PR(torch_npu/utils/_dynamo.py) | 105 | 1 | 1 | 无(行为未变) | | 仅改测试文件 | 1 | 0 | 1 | test_fxrt_basic.py | | 仅改文档 | 0 | 0 | 0 | 无 | 改前 fxrt PR 的 select_tasks 为 0,UT_select_part_* 全部跳过;改后为 1,用例在该任务中执行。不需要改动任何流水线 YAML。 **logger(改动 2)** —— 写了针对性 C++ 用例,四项断言全过:vector<int> 格式未变({1, 2, 3})、vector<std::string> 新增可用({a, b})、LogStream 仍接受 vector({7, 8})、static_assert 断言全局命名空间不再可见该重载。并反向验证该用例有效:同一份代码对 master 的 logger.h 编译,两条 static_assert 如预期触发,vector<std::string> 如预期报 no matching function for call to 'to_string'。 **算子删除(改动 3)** —— NPU 实跑:Python Op 枚举中三个算子已消失(剩 159 个),make_tuple/tuple_getitem/return/view/autofuse_call/custom_call 等完好,图正常构建执行、结果与 eager allclose。另按五个维度全树扫描确认零残留引用(枚举形式 ops::Op_*、算子名字符串、Python 侧、其他算子表、README);find 确认全树只有 ops.list 一张算子表。 **宏与环境变量(改动 4)** —— 用预处理器核对 FXRT_EXPORT 三个分支的展开,与 master 逐一一致: | 条件 | 展开 | 与 master 对比 | | --- | --- | --- | | Linux | __attribute__((visibility("default"))) | identical | | _WIN32 + HARDWARE_DLL | __declspec(dllexport) | identical | | _WIN32 无 HARDWARE_DLL | __declspec(dllimport) | identical | libfxrt.so 导出符号集改动前后 diff 为空(30 个,一致)。环境变量双向实测:FXRT_KERNEL_LIB_PATH 直接生效且无告警;DART_KERNEL_LIB_PATH 打出 DART_KERNEL_LIB_PATH is deprecated, use FXRT_KERNEL_LIB_PATH instead. 后照常加载。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR 标题正确使用类型标签,如:feat、fix、refactor、docs、test 等 - [ ] PR 持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!47686 | 15 天前 | |
feat: integrate fxrt as in-tree subpackage of torch_npu build and wheel Co-authored-by: chenhaozhe<chenhaozhe1@huawei.com> # message auto-generated for no-merge-commit merge: !45813 merge fxrt-src into master feat: integrate fxrt as in-tree subpackage of torch_npu build and wheel Created-by: c_34 Commit-by: chenhaozhe Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/4733 - [ ] 重构优化 - [ ] 资料更新 ## 目的 将 fxrt(FX 图运行时)以源码方式合入 torch_npu,随 torch_npu 一起编译打包,用户安装 torch_npu 后即可直接使用,无需单独安装 fxrt。 ### 概述 将 FX 图运行时 fxrt 放入 fxrt/ 目录,随 torch_npu 一起构建,以 torch_npu.fxrt 子包的形式发布,不再单独发包。 diff 主体是 fxrt/ 下的源码。对 torch_npu 已有代码的改动为 19 个文件、约 270 行,其中约 200 行是新增测试。 ### 对 torch_npu 的影响 - import torch_npu 不加载 fxrt,行为不变;fxrt 在 import torch_npu.fxrt 时才加载。 - 导入 fxrt 不改动 inductor,需显式调用 torch_npu.fxrt.register_fx_wrapper() 才会接管。 - C++ 接口唯一改动:导出 npu_logging::Logger。 - --disable_fxrt 可构建不含 fxrt 的 wheel。 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) **构建接入**(沿用 torchair 方式) - setup.py:检测到 fxrt/fxrt 时传入 BUILD_FXRT、FXRT_INSTALL_DST、FXRT_TARGET_PYTHON;package_data 增加 fxrt 的 .so。fxrt 暂不提供 C++ 接口,wheel 中不含 fxrt 头文件。 - CMakeLists.txt:在 torch_npu target 之后 add_subdirectory(fxrt/fxrt)。 - ci/build.sh:新增 --disable_fxrt。 fxrt 的依赖(ACL/HCCL stub、nlohmann、DVM)均复用仓库内已有内容,构建时不下载,也不依赖 CANN 安装。fxrt 库的 RPATH 包含 torch_npu/lib,auditwheel 可在 wheel 内解析 libtorch_npu.so 及其依赖。 **日志** - torch_npu/_logging/_internal.py:注册 fxrt 日志别名,TORCH_NPU_LOGS=+fxrt 控制 fxrt 的 C++ 和 Python 日志。 - torch_npu/csrc/logging/Logger.h:Logger 加 TORCH_NPU_API。torch_npu 以 -fvisibility=hidden 编译,fxrt 调用 Logger 成员函数需要导出符号,实现不变。 - TORCH_NPU_LOGS.md:模块表增加 fxrt。 **构建依赖** - nanobind 仅构建时需要(静态链接,运行时不依赖),加入 requirements*-build.txt、.ci/docker/requirements-builder.txt(==2.13.0)、ci/docker 的 Dockerfile 和源码构建指南。 **测试与门禁** - 新增 test/fxrt(7 个用例,fxrt 未构建时跳过):fxrt 后端编译运行;import torch_npu / import torch_npu.fxrt 无副作用;register_fx_wrapper() 注册行为。 - test/npu/test_public_bindings.py:模块名检查跳过 torch_npu.fxrt。fxrt 以顶层包名 fxrt 执行,对象的 __module__ 为 fxrt.*;导入检查不跳过。 - .lintrunner.toml:fxrt C++ 源码纳入 clang-format 检查。 - tools/linter/dictionary.txt:增加 hax`(fxrt 哈希实现中的变量名)。 详见RFC issue # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 当前版本不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 新增demo特性,不涉及历史接口版本变更,demo特性已进行隔离,默认不开启。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 当前作为demo能力,默认不主动使能的情况下,要求不修改任何pytorch_npu已有逻辑和行为。 主要验证: 1. 构建打包安装行为不影响torch-npu的包。 2. 不主动使能情况下,原有torch-npu行为不受fxrt任何影响。 关于新增依赖的缺陷扫描,主要新增一个nanobind作为构建过程中的python依赖,扫描结果如下,引入依赖版本无安全缺陷报告:  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45813 | 1 个月前 | |
feat(ci): 基于历史耗时动态估算 core/select 任务数,避免空跑 Co-authored-by: thickhair<zp2165064878@163.com> # message auto-generated for no-merge-commit merge: !45554 merge ci_job into master feat(ci): 基于历史耗时动态估算 core/select 任务数,避免空跑 Created-by: thickhair Commit-by: thickhair Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/4661 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 基于历史耗时向上取整估算 core/select 任务数,避免空跑 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 测试环境已验证,可动态估算任务数 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45554 | 1 个月前 | |
feat: integrate fxrt as in-tree subpackage of torch_npu build and wheel Co-authored-by: chenhaozhe<chenhaozhe1@huawei.com> # message auto-generated for no-merge-commit merge: !45813 merge fxrt-src into master feat: integrate fxrt as in-tree subpackage of torch_npu build and wheel Created-by: c_34 Commit-by: chenhaozhe Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/4733 - [ ] 重构优化 - [ ] 资料更新 ## 目的 将 fxrt(FX 图运行时)以源码方式合入 torch_npu,随 torch_npu 一起编译打包,用户安装 torch_npu 后即可直接使用,无需单独安装 fxrt。 ### 概述 将 FX 图运行时 fxrt 放入 fxrt/ 目录,随 torch_npu 一起构建,以 torch_npu.fxrt 子包的形式发布,不再单独发包。 diff 主体是 fxrt/ 下的源码。对 torch_npu 已有代码的改动为 19 个文件、约 270 行,其中约 200 行是新增测试。 ### 对 torch_npu 的影响 - import torch_npu 不加载 fxrt,行为不变;fxrt 在 import torch_npu.fxrt 时才加载。 - 导入 fxrt 不改动 inductor,需显式调用 torch_npu.fxrt.register_fx_wrapper() 才会接管。 - C++ 接口唯一改动:导出 npu_logging::Logger。 - --disable_fxrt 可构建不含 fxrt 的 wheel。 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) **构建接入**(沿用 torchair 方式) - setup.py:检测到 fxrt/fxrt 时传入 BUILD_FXRT、FXRT_INSTALL_DST、FXRT_TARGET_PYTHON;package_data 增加 fxrt 的 .so。fxrt 暂不提供 C++ 接口,wheel 中不含 fxrt 头文件。 - CMakeLists.txt:在 torch_npu target 之后 add_subdirectory(fxrt/fxrt)。 - ci/build.sh:新增 --disable_fxrt。 fxrt 的依赖(ACL/HCCL stub、nlohmann、DVM)均复用仓库内已有内容,构建时不下载,也不依赖 CANN 安装。fxrt 库的 RPATH 包含 torch_npu/lib,auditwheel 可在 wheel 内解析 libtorch_npu.so 及其依赖。 **日志** - torch_npu/_logging/_internal.py:注册 fxrt 日志别名,TORCH_NPU_LOGS=+fxrt 控制 fxrt 的 C++ 和 Python 日志。 - torch_npu/csrc/logging/Logger.h:Logger 加 TORCH_NPU_API。torch_npu 以 -fvisibility=hidden 编译,fxrt 调用 Logger 成员函数需要导出符号,实现不变。 - TORCH_NPU_LOGS.md:模块表增加 fxrt。 **构建依赖** - nanobind 仅构建时需要(静态链接,运行时不依赖),加入 requirements*-build.txt、.ci/docker/requirements-builder.txt(==2.13.0)、ci/docker 的 Dockerfile 和源码构建指南。 **测试与门禁** - 新增 test/fxrt(7 个用例,fxrt 未构建时跳过):fxrt 后端编译运行;import torch_npu / import torch_npu.fxrt 无副作用;register_fx_wrapper() 注册行为。 - test/npu/test_public_bindings.py:模块名检查跳过 torch_npu.fxrt。fxrt 以顶层包名 fxrt 执行,对象的 __module__ 为 fxrt.*;导入检查不跳过。 - .lintrunner.toml:fxrt C++ 源码纳入 clang-format 检查。 - tools/linter/dictionary.txt:增加 hax`(fxrt 哈希实现中的变量名)。 详见RFC issue # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 当前版本不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 新增demo特性,不涉及历史接口版本变更,demo特性已进行隔离,默认不开启。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 当前作为demo能力,默认不主动使能的情况下,要求不修改任何pytorch_npu已有逻辑和行为。 主要验证: 1. 构建打包安装行为不影响torch-npu的包。 2. 不主动使能情况下,原有torch-npu行为不受fxrt任何影响。 关于新增依赖的缺陷扫描,主要新增一个nanobind作为构建过程中的python依赖,扫描结果如下,引入依赖版本无安全缺陷报告:  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45813 | 1 个月前 | |
| 2 年前 | ||
feat(ci): 基于历史耗时动态估算 core/select 任务数,避免空跑 Co-authored-by: thickhair<zp2165064878@163.com> # message auto-generated for no-merge-commit merge: !45554 merge ci_job into master feat(ci): 基于历史耗时动态估算 core/select 任务数,避免空跑 Created-by: thickhair Commit-by: thickhair Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/4661 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 基于历史耗时向上取整估算 core/select 任务数,避免空跑 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 测试环境已验证,可动态估算任务数 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45554 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 15 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 1 个月前 |