| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
feat: Align ACLGraph RNG capture state Co-authored-by: luochao60<luochao60@huawei.com> # message auto-generated for no-merge-commit merge: !41461 merge pta_support_generator_per_capture_20260709_master into master feat: Align ACLGraph RNG capture state Created-by: luochao60 Commit-by: luochao60 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 > 关联 issue: #2823 (https://gitcode.com/Ascend/pytorch/issues/2823) - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列 > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 1. 在 AclInterface 中新增 aclmdlRIGetId 动态加载封装 TryAclmdlRIGetId;在 NPUGraphsUtils 中新增 capture id 查询工具,优先使用 CANN 返回的 modelRI id,运行时不支持时回退 modelRI 地址。 2. NPUGraph 记录 CaptureId_t,并将 _currently_capturing_graphs 从 aclmdlRI key 切换为 capture id key;capture_begin/capture_end/reset/replay 以及 allocator filter 均按 capture id 处理。 3. NPUGeneratorState 新增 per-capture NPUGeneratorCaptureState map,按 capture id 保存 seed/offset tensor 和 graph 内 offset;删除 generator 侧 registered_graphs_,graph reset 时按 capture id 清理状态。 4. 新增 ACLGraph RNG 测试,覆盖两个 graph 在不同 stream replay 的 eager 对齐,以及 graph reset 后 recapture 不复用旧 capture state。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及客户面可见接口变更。内部 C++ helper 新增 TryAclmdlRIGetId、captureStatusMayInitCtx、isStreamCapturingMayInitCtx、captureIdMayInitCtx、currentStreamCaptureIdMayInitCtx、currentStreamCaptureId、captureIdFromModelRI;NPUGeneratorState capture lifecycle 方法改为传入 CaptureId_t。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤 > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 已验证: - python test/npu/test_aclgraph_rng_state.py -v - python test/npu/test_aclgraph_rng_state.py TestAclgraphRngState.test_graph_rng_concurrent_replay_on_different_streams -v - python test/npu/test_aclgraph_rng_state.py TestAclgraphRngState.test_graph_rng_reset_recapture -v 新增 test_graph_rng_concurrent_replay_on_different_streams 和 test_graph_rng_reset_recapture 用例覆盖本次改动。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41461 | 1 个月前 | |
[fix] support memory reuse in launch_host_func_pending Co-authored-by: Chukun Wang<wangchukun@huawei.com> # message auto-generated for no-merge-commit merge: !36074 merge master into master [fix] support memory reuse in launch_host_func_pending Created-by: kita-ikuyo Commit-by: Chukun Wang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> https://gitcode.com/Ascend/pytorch/issues/2009 - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) launch_host_func_pending由直接传递Tensor改为传递tensor地址,由callback thread根据地址做h2h拷贝,拷贝结束后原始tensor的pinned memory可以被释放并复用。回调线程/python线程使用被拷贝的tensor值做后续print/save,并在print/save结束后释放内存,以节省运行时host内存使用。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 验证ok,修改前整网出现host oom,修改后解决。  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!36074 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
fix: fix task queue aclgraph bug Co-authored-by: luochao60<luochao60@huawei.com> # message auto-generated for no-merge-commit merge: !32803 merge Pynative_fix_task_queue_aclgraph_bug_add_wait_stream_status_20260327_master into master fix: fix task queue aclgraph bug Created-by: luochao60 Commit-by: luochao60 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 - [ ] 需求 - [x] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列 > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 1. **NPUCachingAllocator.h/cpp**:新增 hasCapturesUnderway(device) 接口,用于查询当前设备是否有正在进行的 ACLGraph capture。在 DeviceCachingAllocator 中加锁读取 captures_underway 容器是否为空;在 NpuCachingAllocator 顶层类中实现 override 并转发到对应 device allocator;在头文件中新增 inline 辅助函数 hasCapturesUnderway(device) 供外部调用。 2. **NPUEvent.cpp**:在 NPUEvent::block() 函数中,LaunchWaitEventTask 之后增加判断:若当前设备处于 ACLGraph capture 状态(hasCapturesUnderway 返回 true),则调用 emptyAllNPUStream() 刷新 task queue。修复了多流场景下(主流与旁路流通过 wait_stream 交互时)capture replay 结果不正确的问题。 3. **test/npu/test_aclgraph_multi_stream.py**:新增多流 ACLGraph 正确性测试,覆盖两种场景:shared-expert 旁路流 fork/join 模式、并行分支 fork/join 模式,验证 replay 后数值结果与 eager 模式一致。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 新增内部接口 NPUCachingAllocator::hasCapturesUnderway(c10::DeviceIndex device),为 NPU allocator 虚函数扩展,不属于对外客户面 API,不涉及跨仓接口变更。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤 > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 新增测试文件 test/npu/test_aclgraph_multi_stream.py,包含以下用例: - test_shared_expert_stream_capture_replay:验证 shared-expert 旁路流模式下 capture/replay 数值正确性 - test_parallel_branch_capture_replay:验证并行分支 fork-join 模式下 capture/replay 数值正确性 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!32803 | 4 个月前 | |
feat: [ACLGRAPH]support pin memory Co-authored-by: luochao60<luochao60@huawei.com> # message auto-generated for no-merge-commit merge: !34382 merge pta_add_pin_memory_pool_20260408_master into master feat: [ACLGRAPH]support pin memory Created-by: luochao60 Commit-by: luochao60 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列 > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 本次改动让 ACLGraph 捕获期间也能正常使用 pin_memory(pinned host memory),将 host allocator 接入 NPUGraph 的 mempool 私有池机制,避免 capture 期间申请到的 pinned 内存被错误回收。 1. torch_npu/csrc/core/npu/CachingHostAllocator.cpp: - NPUCachingHostAllocatorImpl 实现基类 CachingHostAllocator 的 get_current_stream() 与 stream_is_capturing() 虚接口:返回当前 NPU stream,并通过 AclmdlRICaptureGetInfo 判断该 stream 是否处于 capture 状态,使基类能正确识别 NPU 的 capture 语义。 - NPUCachingHostAllocator 重写 begin_allocate_to_pool / end_allocate_to_pool / release_pool 接口,转发到内部 impl,与设备侧 NPUCachingAllocator 的私有池接口一一对应。 2. torch_npu/csrc/core/npu/NPUGraph.cpp: - capture_begin 增加约束:当 pin_memory_expandable_segments=True 时禁止开启 ACLGraph capture。原因是 NPUExpandableHostAllocatorImpl 重写了 allocate/free/empty_cache/record_event,不与基类 CachingHostAllocator 的私有池机制对接,会导致 capture 期间分配的 pinned block 在回放时被错误回收,引发数据损坏;通过 TORCH_CHECK 显式报错,提示用户调整 PYTORCH_NPU_ALLOC_CONF。 - 在调用 NPUCachingAllocator::beginAllocateToPool 之外,同步调用 host allocator 的 begin_allocate_to_pool,将 host pinned 内存也注册到同一个 mempool_id_ 私有池中;filter 通过 NPUStream::stream(false) 取出底层 aclrtStream 后复用同一份判断逻辑,避免触发 PTA 任务队列的 flush。 - capture_end / reset 配套调用 host allocator 的 end_allocate_to_pool / release_pool,与设备侧池的生命周期保持一致。 3. torch_npu/npu/graphs.py:graph 上下文管理器进入时,在 torch.npu.empty_cache() 之后追加一次 torch_npu.npu.host_empty_cache(),避免上一次 capture 残留的 pinned cache 影响本次 capture 的内存可见性。 4. test/npu/test_aclgraph_pin_memory.py:新增 ACLGraph + pin_memory 集成测试用例,覆盖 capture/replay 期间 pin_memory 申请/释放的正确性,以及 pin_memory_expandable_segments=True 与 capture 互斥时的报错路径。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及对外公开接口的变更。新增的 get_current_stream / stream_is_capturing / begin_allocate_to_pool / end_allocate_to_pool / release_pool 都是 PTA 内部 host allocator 对 PyTorch 基类 CachingHostAllocator 的虚函数实现/重写,不会改变面向用户的 Python API 行为。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤 > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 新增 test/npu/test_aclgraph_pin_memory.py 用例,覆盖以下场景: - ACLGraph capture 期间申请 pin_memory tensor,capture 结束后 replay,结果与 eager 一致。 - 多次 capture/replay,pinned 内存释放后能被同一私有池复用,无内存泄漏。 - pin_memory_expandable_segments=True 时调用 capture_begin 应触发 TORCH_CHECK 报错,提示用户调整 PYTORCH_NPU_ALLOC_CONF。 - 通过 python test/npu/test_aclgraph_pin_memory.py 在本地 NPU 环境运行通过。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34382 | 4 个月前 | |
feat: Align ACLGraph RNG capture state Co-authored-by: luochao60<luochao60@huawei.com> # message auto-generated for no-merge-commit merge: !41461 merge pta_support_generator_per_capture_20260709_master into master feat: Align ACLGraph RNG capture state Created-by: luochao60 Commit-by: luochao60 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 > 关联 issue: #2823 (https://gitcode.com/Ascend/pytorch/issues/2823) - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列 > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 1. 在 AclInterface 中新增 aclmdlRIGetId 动态加载封装 TryAclmdlRIGetId;在 NPUGraphsUtils 中新增 capture id 查询工具,优先使用 CANN 返回的 modelRI id,运行时不支持时回退 modelRI 地址。 2. NPUGraph 记录 CaptureId_t,并将 _currently_capturing_graphs 从 aclmdlRI key 切换为 capture id key;capture_begin/capture_end/reset/replay 以及 allocator filter 均按 capture id 处理。 3. NPUGeneratorState 新增 per-capture NPUGeneratorCaptureState map,按 capture id 保存 seed/offset tensor 和 graph 内 offset;删除 generator 侧 registered_graphs_,graph reset 时按 capture id 清理状态。 4. 新增 ACLGraph RNG 测试,覆盖两个 graph 在不同 stream replay 的 eager 对齐,以及 graph reset 后 recapture 不复用旧 capture state。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及客户面可见接口变更。内部 C++ helper 新增 TryAclmdlRIGetId、captureStatusMayInitCtx、isStreamCapturingMayInitCtx、captureIdMayInitCtx、currentStreamCaptureIdMayInitCtx、currentStreamCaptureId、captureIdFromModelRI;NPUGeneratorState capture lifecycle 方法改为传入 CaptureId_t。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤 > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 已验证: - python test/npu/test_aclgraph_rng_state.py -v - python test/npu/test_aclgraph_rng_state.py TestAclgraphRngState.test_graph_rng_concurrent_replay_on_different_streams -v - python test/npu/test_aclgraph_rng_state.py TestAclgraphRngState.test_graph_rng_reset_recapture -v 新增 test_graph_rng_concurrent_replay_on_different_streams 和 test_graph_rng_reset_recapture 用例覆盖本次改动。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41461 | 1 个月前 | |
【feat】新增第三批sk_options并更新autofusion commit id Co-authored-by: wangkai<wangkai579@huawei.com> # message auto-generated for no-merge-commit merge: !36330 merge master_sk2 into master 【feat】新增第三批sk_options并更新autofusion commit id Created-by: mihudan Commit-by: wangkai 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/2004 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图  已增加测试用例,出包 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!36330 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
[Feature] generate aligned trace in NPUGraph debug dump Co-authored-by: ChengLyric<licheng236@huawei.com> # message auto-generated for no-merge-commit merge: !43013 merge feat/npugraph-debug-dump-aligned-master into master [Feature] generate aligned trace in NPUGraph debug dump Created-by: LyriCheng Commit-by: ChengLyric Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) - 在 NPUGraph.debug_dump() 成功生成新的原始 JSON 后,额外生成 *.aligned.json。 - 对齐处理仅调整可视化时间轴,不修改原始 JSON。 - 对齐失败仅打印 warning,不影响原始 debug_dump() 返回或原始文件。 - 未成功 capture 或未生成新 dump 时,跳过对齐处理,避免处理旧文件。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 自验证ok # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43013 | 1 个月前 | |
feat: Add ACLGraph update plans Co-authored-by: luochao60<luochao60@huawei.com> # message auto-generated for no-merge-commit merge: !38052 merge Pynative_refactor_aclgraph_update_20260519_master into master feat: Add ACLGraph update plans Created-by: luochao60 Commit-by: luochao60 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 > 关联 issue: #2338 (https://gitcode.com/Ascend/pytorch/issues/2338) - [ ] 需求 - [x] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列 > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 1. 新增 torch_npu._inductor.aclgraph_update_plan 模块,在 Inductor codegen 阶段生成 ACLGraph update plan,并在运行期根据 callable 属性解析 new_inputs 到 FA 类算子 actual sequence 参数的映射。 2. 在 NPU Python wrapper、MLIR/DVM wrapper、graph partition 子图 wrapper 中挂载 plan,支持 graph partition 开关下分别写入 call 或 partition_x 函数属性。 3. 在 _graph_tree record/replay 路径消费 update plan,record 后校验 plan 与真实 capture record 的顺序、算子名和可更新 key,replay 前解析为 CPU update input。 4. 将 IFA/IFA v2/FA3 等 npugraph handler 的 actual sequence 更新点改为 UPDATE_SPECS 声明式描述,并由 base handler 统一更新 args/kwargs。 5. 补充 plan 构建、plan 解析、handler 注册、wrapper emit、npugraphify callable 属性保持等单元测试,替换旧的集中测试文件。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及对外资料变更。 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及客户面可见 API 变更;新增 torch_npu._inductor.aclgraph_update_plan 为内部编译与 ACLGraph 运行期协同模块。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤 > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 已补充并验证以下单测: 1. test/npu/test_aclgraph_update_plan.py 覆盖 plan 构建、输入映射、常量解析、非法 plan 校验。 2. test/npu/test_npugraph_handler.py 覆盖 IFA/IFA v2 handler 的 UPDATE_SPECS 注册。 3. test/_inductor/test_aclgraph_update_plan_compile.py 覆盖 wrapper/graph partition emit、MLIR/DVM wrapper、npugraphify callable 属性保持等非设备单测。 4. 多版本迁移后已在 v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0、master 分支通过静态检查和不涉及设备的单测验证。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!38052 | 2 个月前 | |
RNG lazy generator registration (port of pytorch#176753 + #176754) Co-authored-by: y30062407<handsome0324@163.com> # message auto-generated for no-merge-commit merge: !41608 merge master_rng into master RNG lazy generator registration (port of pytorch#176753 + #176754) Created-by: yangch0324 Commit-by: y30062407 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 将 PyTorch 社区 PR (惰性 generator 注册) https://github.com/pytorch/pytorch/pull/176753 (线程安全加固)https://github.com/pytorch/pytorch/pull/176754 移植到 torch_npu,实现 RNG 算子在 ACLGraph 中的自动注册、per-capture 状态隔离和并发安全。 依赖前置 PR https://gitcode.com/Ascend/pytorch/pull/41460 https://gitcode.com/Ascend/pytorch/pull/41461(per-capture RNG 状态基础设施)。 1. 合并 get_capture_state 与 init_capture_state 为单方法 前置 PR 定义了两个方法:get_capture_state(capture_id) 仅查询(未找到返回 nullptr),init_capture_state(capture_id) 创建并插入。本 PR 将二者合并为 get_capture_state(capture_id, create_if_not_found = false): - create_if_not_found = false:等价于旧 get_capture_state,仅查询 - create_if_not_found = true:首次调用时自动创建 NPUGeneratorCaptureState、分配 GPU tensor(seed + offset 各 1 个 int64)、插入 capture_states_ map GPU tensor 分配使用 NPUStreamGuard(getDefaultNPUStream()) 确保内存落在默认池而非图的捕获池,避免图内存泄漏检测误报。capture_states_ 的插入采用双重检查加锁(double-checked locking):先在持锁时判断不存在,释放锁后执行 GPU 分配,再持锁做二次检查后插入。 2. RNG 调用方改为惰性创建 increase()、set_philox_offset_per_thread()、philox_offset_per_thread()、philox_cuda_state() 四个方法原来在 capture_id 存在时调用 get_capture_state(id) 然后 TORCH_CHECK 非空——若用户未事先调用 register_generator_state() 则崩溃。改为调用 get_capture_state(id, true),首次 RNG 操作自动触发注册,无需用户干预。 3. 删除显式注册链路 - 删除 NPUGeneratorImpl::register_graph() — Generator → NPUGraph 的桥接方法 - 删除 NPUGraph::register_generator_state(const at::Generator&) — 旧的 C++ 层 Generator 重载 - capture_begin() 中删除 gen->register_graph(this) 和 gen->set_secondary_stream_capture_state(false) — 不再预先注册 default generator - capture_begin() 中删除 init_capture_state(capture_id_) 循环 — 不再为已注册 generator 预创建 capture state 上述四步删除后,generator 注册完全由首次 RNG 算子的惰性调用自动完成。 4. Python 绑定弃用 Graph.cpp 中 register_generator_state 的 Python 绑定改为 no-op,调用时输出 TORCH_WARN_DEPRECATION 提醒用户删除调用。Generator 状态在 RNG 算子首次执行时自动注册,旧 API 成为安全空操作。 5. replay_prologue 三步加锁协议 同一 generator 被多个 graph 引用时,不同 graph 可能在不同线程并发 replay。为保证 seed_ 和 philox_offset_per_thread_ 的读写原子性,replay_prologue() 采用三步加锁: - Step 1(持锁):在 capture_states_mutex_ 保护下快照 seed_、philox_offset_per_thread_,查找 capture_state - Step 2(释放锁):执行 capture_state->setup_for_replay()——GPU tensor fill 操作,不应持锁等待 GPU - Step 3(持锁):更新 philox_offset_per_thread_ += wholegraph_increment 6. get_capture_state 中 seed_ 锁内快照 在持锁时读取 seed_ 到局部变量 seed_for_init,释放锁后用快照值初始化 CaptureState。防止与 set_current_seed() 的线程竞争导致 GPU tensor 中的 seed 与 generator 当前 seed 不一致。 上下游组件关系 用户代码 │ no longer needs register_generator_state() ▼ Python API (graph.py) │ capture_begin() → no generator registration │ replay() → replay_prologue(capture_id_, inc) ▼ NPUGraph (C++ 核心) │ captured_generator_states_[state] = whole_graph_increment │ 全局 _currently_capturing_graphs[capture_id] = this ▼ NPUGeneratorState │ capture_states_: hash_map<CaptureId, CaptureState> │ ├── get_capture_state(id, true) → 惰性创建 ★NEW │ ├── capture_epilogue(id) → finalize() 返回总偏移 │ ├── replay_prologue(id, inc) → 三步加锁 ★NEW │ └── remove_capture_state(id) → 图销毁时清理 ▼ NPUGeneratorCaptureState (per-capture) │ seed_extragraph_ / offset_extragraph_ (GPU tensors) │ initialize / increase / finalize / setup_for_replay ▼ RNG Kernel (Dropout, Rand, etc.) │ philox_npu_state(increment) → get_capture_state(id, true) │ → 返回 PhiloxNpuState(seed_ptr, offset_ptr, offset) │ → kernel 通过指针读取 GPU tensor 中的最新值 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41608 | 1 个月前 | |
[fix]multi_stream_lazy_reclaim coredump error Co-authored-by: xuyun15<xuyun15@huawei.com> # message auto-generated for no-merge-commit merge: !42341 merge fix_multi_stream_lazy_reclaim_master into master [fix]multi_stream_lazy_reclaim coredump error Created-by: xuyun15 Commit-by: xuyun15 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 选取issue中方案2作为解决方案 ### 方案2:将 sum > kLazyQuerySize 的 process_events 移到 get_free_block 之前(推荐) 将 sum > kLazyQuerySize 触发的 process_events() 移到 get_free_block 之前,保持与原生 PyTorch 相同的安全时序。同时引入 reaped 变量避免 process_events() 的冗余二次调用。 #### 2.1 process_events() 二次调用问题分析 方案2将 process_events() 的调用拆分为两段: 1. **第一段**:sum > kLazyQuerySize 时在 get_free_block 之前调用 2. **第二段**:!block_found 时在 get_free_block 之后调用 当 sum > kLazyQuerySize 且 get_free_block() 仍然失败时,两段都会触发 process_events(),导致**同一轮 malloc() 中 process_events() 被调用两次**。 # 【资料变更】 不涉及:当前pr不涉及,但是后续会持续跟踪搜集用户诉求,逐步补齐对应的资料和用例 # 【接口变更】 不涉及 # 【功能验证】 修复前:  修复后:  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!42341 | 1 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
[master][bugfix]cann and pta header mixing bulid bugfix Co-authored-by: Dring<17737727613@163.com> # message auto-generated for no-merge-commit merge: !44990 merge master into master [master][bugfix]cann and pta header mixing bulid bugfix Created-by: Dring Commit-by: Dring Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> https://gitcode.com/Ascend/pytorch/issues/3991 - [✕ ] 需求 - [ ✓] 问题单 - [ ✓] issue/工单 - [ ✓] 重构优化 - [✕ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 问题现象: PTA 26.1.0 仓库中的 third_party/acl 头文件来自 CANN 9.1.0,而编译环境安装的是 CANN 9.0.0。当同一个编译单元同时包含两套版本的 ACL 头文件时,会出现类似以下错误:aclmdlRITask 未声明、未定义或类型不匹配 aclmdlRITask 是 CANN 9.1.0 头文件所依赖的定义,但 CANN 9.0.0 对应头文件中不存在该定义或定义不兼容。 根因分析: 1 当前头文件查找路径不统一:PTA 源码中大量使用以下写法 #include "third_party/acl/inc/acl/acl_mdl.h" 因为编译命令中包含 PTA 项目根目录,这种写法会直接命中 PTA 26.1.0 仓库内由 CANN 9.1.0 导入的头文件:torch_npu/third_party/acl/inc/acl/acl_mdl.h 但该头文件内部使用的是标准 SDK 相对路径:#include "acl/acl_base.h" 编译器无法相对 acl_mdl.h 所在目录找到 acl/acl_base.h,因此转而按照全部 -I 目录依次搜索。如果 CANN 9.0.0 的 include 路径排在 PTA 内置 ACL 路径前面,就会命中:CANN-9.0.0/include/acl/acl_base.h 同一个翻译单元最终形成: acl_mdl.h -> PTA third_party 中的 CANN 9.1.0 版本 acl_base.h -> 环境 CANN 9.0.0 版本 这是一种“首层头文件由源码路径固定版本、传递头文件由 -I 顺序选择版本”的混合查找模式。 2 问题不局限于 acl_mdl.h 同样风险存在于所有能够继续 include 其他 CANN 头文件的入口,包括: acl/... aml/... profiling/... graph/... ge/... op_proto/... 因此不能只修复出现错误的某一个头文件,也不能只替换 acl_mdl.h。必须统一整个 CANN 头文件族的查找规则。 修改目标: 修改后需要满足 源码不再包含 third_party/acl/inc/... 这种仓库物理路径。 ACL、AML、profiling 等头文件全部通过统一 include root 查找。 一个编译 target 对 CANN 头文件只选择一套版本。 CANN 9.0.0 环境构建时,首层和传递头文件必须全部命中 CANN 9.0.0。 使用 PTA 内置头文件构建时,首层和传递头文件必须全部命中 PTA 内置的同一套版本。 wheel、libtorch_npu、C++ Extension 和 Inductor/AOT 使用同一目录契约 修改方案: 1、代码中使用 PTA 内置 ACL 头文件的地方,删除 third_party/acl/inc/ 物理路径前缀,统一改成从 include root 查找 2、打包或安装时,把 third_party/acl/inc 下需要公开的目录按原相对结构复制到安装产物的公共 include 根目录 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 cann 9.0.0 + pta 26.1.0的vllm-ascend安装验证成功  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [✓ ] 代码注释完备,正确记录错误日志 - [✕ ] 代码实现进行了返回值、空指针等校验 - [✓ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [✓ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!44990 | 11 天前 | |
fix: lintrunner --all-files --take NEWLINE -a Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35539 merge code_check_lintrunner into master fix: lintrunner --all-files --take NEWLINE -a Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 文件必须以 LF 换行符结尾,不允许 CRLF(DOS 换行),执行: lintrunner --all-files --take NEWLINE -a # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35539 | 3 个月前 | |
[master]fix aoe ut Co-authored-by: DaiFu<daifu2@huawei.com> # message auto-generated for no-merge-commit merge: !27470 merge 2512AoeUt into master [master]fix aoe ut Created-by: daifu1234567 Commit-by: DaiFu Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > > /kind bug **What does this PR do / why do we need it**: 需要走aclop才会有aoe的dump图,现在conv2d需要切aclnn,所以用例并不会保存aoe图。 **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: Fixes #<issue number>, or Fixes (paste link of issue). --> Fixes # **Special notes for your reviewers**: See merge request: Ascend/pytorch!27470 | 8 个月前 | |
fix ut Co-authored-by: DaiFu<daifu2@huawei.com> # message auto-generated for no-merge-commit merge: merge master into master fix ut Created-by: daifu1234567 Commit-by: DaiFu Merged-by: ascend-robot Description: fix test_binary_cross_with_logits_float16 by setting random seed See merge request: Ascend/pytorch!25307 | 11 个月前 | |
Revert "fix: fix aclnn npu_format_cast to respect allow_internal_format=False" Co-authored-by: wangzili<wangzili14@huawei.com> # message auto-generated for no-merge-commit merge: !39267 merge master into master Revert "fix: fix aclnn npu_format_cast to respect allow_internal_format=False" Created-by: wangzili121 Commit-by: wangzili Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [x] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 回退 fix aclnn npu_format_cast to respect allow_internal_format=False,删除 npu_format_cast 的 aclnn 路径中对 allow_internal_format 的处理 # 【资料变更】 当前PR不涉及,相应资料已在op-plugin仓呈现 # 【接口变更】 不涉及 # 【功能验证】 UT通过 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!39267 | 2 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
feat: support overflow switch on non-saturation mode via FORCE_OVERFLOW_CHECK Co-authored-by: wuyouqi1<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !45378 merge feat/force-overflow-check-master into master feat: support overflow switch on non-saturation mode via FORCE_OVERFLOW_CHECK Created-by: wuyouqi1 Commit-by: wuyouqi1 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 1. AclInterface.cpp: AclrtCreateStreamWithConfig 内联 FORCE_OVERFLOW_CHECK 判断(env=1 且 CANN>=9.1.0 时非饱和 INF_NAN 模式也开启 aclrtSetStreamOverflowSwitch 溢出检测开关,版本不满足时 LOGW 一次并回退原逻辑),为 Inf/NaN 问题提供不影响执行时序的异步定位能力。 2. torch_npu/npu/utils.py: 新增 is_force_overflow_check() 查询接口(仅 npu.utils 命名空间);get_npu_overflow_flag / npu_check_overflow / clear_npu_overflow_flag 三个接口在 force 开启时改走溢出状态标志检测路径。 3. test: test_check_over_flow.py 扩展寄存器级、utils 层及子进程负向环境变量用例;torch_npu_schema.json 登记新 API。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 环境:Ascend910B2 + CANN 9.2.0(非饱和 INF_NAN 模式)。 1. 手工能力验证:FORCE_OVERFLOW_CHECK=1 下 fp16 溢出(65504+65504)经溢出状态标志检出(get_npu_overflow_flag=True);npu_check_overflow 检出后自动清除标志(残留=False);正常运算不误报(False)。 2. UT:test/npu/test_check_over_flow.py 6 用例全绿(含 force 生效检出、默认行为回归、版本不匹配告警、非法取值容错)。 3. 性能对比:mm(4096x4096) fp16 开关开启 0.463ms/iter vs 关闭 0.455ms/iter,开销约 +1.8%。 4. 该改动已先合入 v2.7.1 分支(MR !44962,合入 commit b7bb55832),本 MR 为向其他分支的同步。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45378 | 10 天前 | |
| 2 年前 | ||
[master][Fix] Fix static check errors detected by TABS Co-authored-by: thickhair<zp2165064878@163.com> # message auto-generated for no-merge-commit merge: !37810 merge TABS_fix into master [master][Fix] Fix static check errors detected by TABS 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/1865 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!37810 | 2 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
[master][feature]support environment_variable TORCH_NPU_CPU_FALLBAC Co-authored-by: Dring<17737727613@163.com> # message auto-generated for no-merge-commit merge: !44797 merge master into master [master][feature]support environment_variable TORCH_NPU_CPU_FALLBAC Created-by: Dring Commit-by: Dring Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> https://gitcode.com/Ascend/pytorch/issues/4137 - [✓ ] 需求 - [✕ ] 问题单 - [✓ ] issue/工单 - [✕ ] 重构优化 - [✕ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 当前 torch_npu 在 NPU 算子缺少后端实现时,可能通过 PyTorch PrivateUse1 backend fallback 将输入复制到 CPU 并执行 CPU kernel。部分已经注册 NPU kernel 的实现,也会因为 dtype、参数、SoC 或 CANN/AclNN 接口能力不足,在函数内部主动执行 CPU 计算。 这类行为提高了模型兼容性,但可能掩盖 NPU 算子覆盖缺口,引入不可见的同步、D2H/H2D 传输和性能长尾。用户目前缺少统一手段判断模型是否发生了隐式 CPU 主计算,也无法在 CI、性能验收或算子覆盖检查中禁止该行为。 本 RFC 提议新增进程级环境变量: TORCH_NPU_FALLBACK_CPU_DISABLE=0 # 默认值:允许已纳管路径 fallback 到 CPU TORCH_NPU_FALLBACK_CPU_DISABLE=1 # 严格模式:已纳管路径准备执行 CPU 主计算时直接报错 第一版覆盖: torch_npu Dense PrivateUse1 全局 backend fallback。 torch_npu Sparse CSR sum/prod 显式 CPU fallback。 op-plugin ops/opapi 中确认属于 fallback 语义的 AclNN/opapi CPU 路径。 第一版明确不覆盖: op-plugin ops/aclops 中的 ACL Op 实现。 用户显式 .cpu()、.to("cpu") 和 Host↔NPU copy。 shape、状态、控制 tensor、错误码等 Host 控制逻辑。 算子定义本身要求 Host 执行的预处理或格式转换,例如 INT4/FP4 权重 bit-pack。 Inductor lowering/fusion fallback 本身。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [✓ ] 代码注释完备,正确记录错误日志 - [✕ ] 代码实现进行了返回值、空指针等校验 - [✓ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [✓ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!44797 | 19 天前 | |
[feat] support custom segment_size for expandable_segments Co-authored-by: XDaoHong<xudaohong@huawei.com> # message auto-generated for no-merge-commit merge: !26375 merge master into master [feat] support custom segment_size for expandable_segments Created-by: XDaoHong Commit-by: XDaoHong Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > > /kind bug > /kind task > feature **What does this PR do / why do we need it**: 虚拟内存管理场景,增加segment_size环境变量,优化集合通信zerocopy内存映射性能 **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: Fixes #<issue number>, or Fixes (paste link of issue). --> Fixes # **Special notes for your reviewers**: See merge request: Ascend/pytorch!26375 | 9 个月前 | |
add set_deterministic_level Co-authored-by: SCh-zx<1325467101@qq.com> # message auto-generated for no-merge-commit merge: !30390 merge master into master add set_deterministic_level Created-by: SCh_zx Commit-by: SCh-zx Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > > /kind bug > /kind task > /kind feature **What does this PR do / why do we need it**: 新增接口用于配置强一致性 **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: Fixes #<issue number>, or Fixes (paste link of issue). --> Fixes # **Special notes for your reviewers**: See merge request: Ascend/pytorch!30390 | 7 个月前 | |
| 2 年前 | ||
Release 2.14.0 Co-authored-by: wuyouqi1<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !45390 merge feat/v2.14.0-release into master Release 2.14.0 Created-by: wuyouqi1 Commit-by: wuyouqi1 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/1923 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 社区演进和版本升级,参考 !40367(Release 2.13.0),进行 2.14 切分支与出包适配,依赖切换至 torch 2.14.0(stable whl/cpu),并预置 2.15 开发线 requirements 轮转。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 涉及:SUPPORT.md / SUPPORT.en.md、SECURITYNOTE.md 版本信息随本 PR 同步更新 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 bash ci/build.sh --python=3.10 --torch=2.14.0 版本校验通过;torch 2.14.0+cpu / torchvision 0.29.0+cpu 已在 whl/cpu stable 通道确认可获取。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45390 | 4 天前 | |
[Task-32/33][master] API Consistency: torch.autograd.gradcheck & torch.autograd.profiler.emit_itt Co-authored-by: hongwei-2026<feizi_050920@qq.com> # message auto-generated for no-merge-commit merge: !42015 merge adapt-gradcheck-emit-itt-master into master [Task-32/33][master] API Consistency: torch.autograd.gradcheck & torch.autograd.profiler.emit_itt Created-by: hongwei-2026 Commit-by: hongwei-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联Issue: - https://gitcode.com/Ascend/pytorch/issues/2956 - https://gitcode.com/Ascend/pytorch/issues/2957 # 【修改方案】 本 PR 属于 Torch-NPU API 一致性对齐任务,面向 torch.autograd.gradcheck 与 torch.autograd.profiler.emit_itt 完成 master 版本的测试用例补齐。 ## API 功能说明 ### torch.autograd.gradcheck gradcheck(func, inputs, *, eps=1e-6, atol=1e-5, rtol=1e-3, ...) -> bool 通过小有限差分计算数值梯度并与分析梯度比较,验证自动微分实现的正确性。是 PyTorch 官方提供的梯度验证工具函数,默认使用 float64 精度以保证数值稳定性。 ### torch.autograd.profiler.emit_itt emit_itt(enabled=True, record_shapes=False) 上下文管理器,使每个 autograd 操作发出 ITT 范围标注,用于 Intel VTune Profiler 性能分析。 ## 用例完整性说明 ### torch.autograd.gradcheck 经检索 PyTorch 官方仓库(master),对 test/ 目录执行了检索: grep -rn "def test.*gradcheck" test/test_autograd.py --include="*.py" 检索结论:PyTorch 官方已包含 test_gradcheck_single_input 等一系列独立聚焦测试用例。 Ascend NPU 不支持 float64 的 linalg.vector_norm、dot、mm、relu 算子,因此 fast_mode 无法直接在 NPU 上运行。按任务文档场景一规范,在 slow_mode 下对 NPU 支持的 float64 运算编写测试用例,覆盖单输入、多输入、返回元组、二阶梯度等场景。 ### torch.autograd.profiler.emit_itt PyTorch 官方在 test/test_autograd.py 中包含 test_profiler_emit_itt 测试用例,带以下装饰器: @unittest.skipIf(not torch.profiler.itt.is_available(), "ITT is required") def test_profiler_emit_itt(self, device): a = torch.tensor([1, 2, 3], dtype=torch.float32, device=device) with emit_itt(): a.add(1.0) Ascend NPU 上 torch.profiler.itt.is_available() 返回 False,用例被自动跳过。 检索结论:上游用例在 NPU 上无法直接运行,需通过 test_upstream patch 适配并新增独立测试。 ## 具体修改内容 本 PR 新增 2 个测试文件: - test/npu/test_gradcheck.py - test/npu/test_emit_itt.py ### test/npu/test_gradcheck.py(9 个测试方法) | 测试方法 | 覆盖场景 | |---------|---------| | test_gradcheck_slow_mode_mul | 单输入 mul | | test_gradcheck_slow_mode_linear | 线性函数 | | test_gradcheck_slow_mode_sin_cos | sin().cos() | | test_gradcheck_slow_mode_exp | exp() | | test_gradcheck_slow_mode_sum | sum() | | test_gradcheck_slow_mode_multiple_inputs | 多输入 | | test_gradcheck_slow_mode_return_tuple | 返回元组 | | test_gradgradcheck_slow_mode_mul | 二阶梯度 | | test_gradgradcheck_slow_mode_multiple_inputs | 多输入二阶梯度 | ### test/npu/test_emit_itt.py(3 个测试方法) | 测试方法 | 覆盖场景 | |---------|---------| | test_emit_itt_import | API 导入 | | test_emit_itt_construction | 对象构造 | | test_emit_itt_disabled_noop | enabled=False no-op | # 【资料变更】 不涉及。 torch.autograd.gradcheck、torch.autograd.gradgradcheck、torch.autograd.profiler.emit_itt 在 master 版本文档中均已收录,无需补充。 # 【接口变更】 不涉及。 # 【功能验证】 | 组件 | 版本 | |------|------| | torch | master | | CANN | 9.1.0 | | NPU | Ascend 910B3 | 测试命令: python test/npu/test_gradcheck.py -v # Ran 9 tests OK python test/npu/test_emit_itt.py -v # Ran 3 tests OK ## 测试截图  # 【CheckList】 - [x] 代码注释完备 - [x] 返回值、空指针等校验 - [x] PR标题正确使用类型标签 - [ ] PR持续集成流水线(CI)执行通过 --- ## 结论 torch.autograd.gradcheck 和 torch.autograd.profiler.emit_itt 在 master 版本 NPU 环境下通过测试用例补齐,功能与 PyTorch 官方行为一致。 See merge request: Ascend/pytorch!42015 | 27 天前 | |
feat(inductor): dispatcher-free _empty_strided_npu fast-path allocation Co-authored-by: liuyutong_bury<liuyutong25@huawei.com> # message auto-generated for no-merge-commit merge: !41734 merge feat/empty-strided-npu-fastpath into master feat(inductor): dispatcher-free _empty_strided_npu fast-path allocation Created-by: liuyutong_bury Commit-by: liuyutong_bury Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> https://gitcode.com/Ascend/pytorch/issues/2888 - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 Add a torch_npu._C._empty_strided_npu binding that mirrors upstream's _empty_strided_ (CUDA/XPU/MTIA) fast path for inductor-generated wrappers, bypassing the operator dispatcher. - InitNpuBindings.cpp: THPModule_empty_strided_npu METH_VARARGS stub that parses the (sizes, strides, dtype) 3-tuple directly and calls the native factory; registered in TorchNpuMethods. - TensorFactories.{h,cpp}: TORCH_NPU_API empty_strided_npu — inlines the essential empty_strided steps (storage byte-size from size/stride, single allocate, set sizes/strides, one SetDesc) without empty({0})'s RECORD_FUNCTION / NPURecordFunction guard / 0-byte resize round-trip. at::empty_strided(device='npu') is dispatched (~2us/alloc). Inductor backward graphs allocate many buffers per step, so this host overhead dominates; the fast path removes it while keeping the NPU storage-descriptor setup. # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 #### 基础功能测试 | 测试用例 | 状态 | 验证功能 | |---------|------|---------| | test/npu/test_tensor.py::TestTensor::test_empty_strided | ✅ PASSED | 基本empty_strided功能、各种shape/stride组合、空tensor处理、storage大小计算正确性 | #### API兼容性测试 | 测试用例 | 状态 | 验证功能 | |---------|------|---------| | test/npu/test_npu.py::TestNpu::test_function_torch_empty_strided | ✅ PASSED | torch.empty_strided API、不同dtype支持 | | test/test_tensor_creation_ops.py::TestTensorCreationPRIVATEUSE1::test_empty_strided_npu | ✅ PASSED | 通用tensor创建、跨设备一致性 | #### 新增测试用例验证 新增 test/npu/test_empty_strided_npu.py 测试文件,包含9个测试用例全面验证 _empty_strided_npu fast path 功能。 **测试覆盖:** - 基础功能、空tensor、多dtype支持 (float32/16, int32/8, uint8, bool) - 复杂stride模式、广播stride - 确定性计算场景torch.empty_strided一致性验证、Storage大小计算正确性 - new_empty_strided API集成、@Dtypes装饰器测试 **测试结果:** 9/9 passed ✅ **文件信息:** - 路径: test/npu/test_empty_strided_npu.py - 行数: 200行 - 运行: pytest test/npu/test_empty_strided_npu.py -v 该测试套件确保了inductor NPU内存分配fast path的功能正确性和兼容性。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41734 | 1 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
fix: lintrunner --all-files --take NEWLINE -a Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35539 merge code_check_lintrunner into master fix: lintrunner --all-files --take NEWLINE -a Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 文件必须以 LF 换行符结尾,不允许 CRLF(DOS 换行),执行: lintrunner --all-files --take NEWLINE -a # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35539 | 3 个月前 | |
Release 2.14.0 Co-authored-by: wuyouqi1<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !45390 merge feat/v2.14.0-release into master Release 2.14.0 Created-by: wuyouqi1 Commit-by: wuyouqi1 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/1923 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 社区演进和版本升级,参考 !40367(Release 2.13.0),进行 2.14 切分支与出包适配,依赖切换至 torch 2.14.0(stable whl/cpu),并预置 2.15 开发线 requirements 轮转。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 涉及:SUPPORT.md / SUPPORT.en.md、SECURITYNOTE.md 版本信息随本 PR 同步更新 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 bash ci/build.sh --python=3.10 --torch=2.14.0 版本校验通过;torch 2.14.0+cpu / torchvision 0.29.0+cpu 已在 whl/cpu stable 通道确认可获取。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45390 | 4 天前 | |
| 2 年前 | ||
[Task-32/33][master] API Consistency: torch.autograd.gradcheck & torch.autograd.profiler.emit_itt Co-authored-by: hongwei-2026<feizi_050920@qq.com> # message auto-generated for no-merge-commit merge: !42015 merge adapt-gradcheck-emit-itt-master into master [Task-32/33][master] API Consistency: torch.autograd.gradcheck & torch.autograd.profiler.emit_itt Created-by: hongwei-2026 Commit-by: hongwei-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联Issue: - https://gitcode.com/Ascend/pytorch/issues/2956 - https://gitcode.com/Ascend/pytorch/issues/2957 # 【修改方案】 本 PR 属于 Torch-NPU API 一致性对齐任务,面向 torch.autograd.gradcheck 与 torch.autograd.profiler.emit_itt 完成 master 版本的测试用例补齐。 ## API 功能说明 ### torch.autograd.gradcheck gradcheck(func, inputs, *, eps=1e-6, atol=1e-5, rtol=1e-3, ...) -> bool 通过小有限差分计算数值梯度并与分析梯度比较,验证自动微分实现的正确性。是 PyTorch 官方提供的梯度验证工具函数,默认使用 float64 精度以保证数值稳定性。 ### torch.autograd.profiler.emit_itt emit_itt(enabled=True, record_shapes=False) 上下文管理器,使每个 autograd 操作发出 ITT 范围标注,用于 Intel VTune Profiler 性能分析。 ## 用例完整性说明 ### torch.autograd.gradcheck 经检索 PyTorch 官方仓库(master),对 test/ 目录执行了检索: grep -rn "def test.*gradcheck" test/test_autograd.py --include="*.py" 检索结论:PyTorch 官方已包含 test_gradcheck_single_input 等一系列独立聚焦测试用例。 Ascend NPU 不支持 float64 的 linalg.vector_norm、dot、mm、relu 算子,因此 fast_mode 无法直接在 NPU 上运行。按任务文档场景一规范,在 slow_mode 下对 NPU 支持的 float64 运算编写测试用例,覆盖单输入、多输入、返回元组、二阶梯度等场景。 ### torch.autograd.profiler.emit_itt PyTorch 官方在 test/test_autograd.py 中包含 test_profiler_emit_itt 测试用例,带以下装饰器: @unittest.skipIf(not torch.profiler.itt.is_available(), "ITT is required") def test_profiler_emit_itt(self, device): a = torch.tensor([1, 2, 3], dtype=torch.float32, device=device) with emit_itt(): a.add(1.0) Ascend NPU 上 torch.profiler.itt.is_available() 返回 False,用例被自动跳过。 检索结论:上游用例在 NPU 上无法直接运行,需通过 test_upstream patch 适配并新增独立测试。 ## 具体修改内容 本 PR 新增 2 个测试文件: - test/npu/test_gradcheck.py - test/npu/test_emit_itt.py ### test/npu/test_gradcheck.py(9 个测试方法) | 测试方法 | 覆盖场景 | |---------|---------| | test_gradcheck_slow_mode_mul | 单输入 mul | | test_gradcheck_slow_mode_linear | 线性函数 | | test_gradcheck_slow_mode_sin_cos | sin().cos() | | test_gradcheck_slow_mode_exp | exp() | | test_gradcheck_slow_mode_sum | sum() | | test_gradcheck_slow_mode_multiple_inputs | 多输入 | | test_gradcheck_slow_mode_return_tuple | 返回元组 | | test_gradgradcheck_slow_mode_mul | 二阶梯度 | | test_gradgradcheck_slow_mode_multiple_inputs | 多输入二阶梯度 | ### test/npu/test_emit_itt.py(3 个测试方法) | 测试方法 | 覆盖场景 | |---------|---------| | test_emit_itt_import | API 导入 | | test_emit_itt_construction | 对象构造 | | test_emit_itt_disabled_noop | enabled=False no-op | # 【资料变更】 不涉及。 torch.autograd.gradcheck、torch.autograd.gradgradcheck、torch.autograd.profiler.emit_itt 在 master 版本文档中均已收录,无需补充。 # 【接口变更】 不涉及。 # 【功能验证】 | 组件 | 版本 | |------|------| | torch | master | | CANN | 9.1.0 | | NPU | Ascend 910B3 | 测试命令: python test/npu/test_gradcheck.py -v # Ran 9 tests OK python test/npu/test_emit_itt.py -v # Ran 3 tests OK ## 测试截图  # 【CheckList】 - [x] 代码注释完备 - [x] 返回值、空指针等校验 - [x] PR标题正确使用类型标签 - [ ] PR持续集成流水线(CI)执行通过 --- ## 结论 torch.autograd.gradcheck 和 torch.autograd.profiler.emit_itt 在 master 版本 NPU 环境下通过测试用例补齐,功能与 PyTorch 官方行为一致。 See merge request: Ascend/pytorch!42015 | 27 天前 | |
[feat]mempool基本结构对齐pytorch Co-authored-by: LiNuohang<linuohang@huawei.com> # message auto-generated for no-merge-commit merge: !39284 merge mempool-core into master [feat]mempool基本结构对齐pytorch Created-by: LiNuohang Commit-by: LiNuohang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 核心改动:将 MemPool 对自定义分配器的所有权从 thread-local 全局状态(MemPoolContext)改为由 PrivatePool 内部持有 shared_ptr<NPUAllocator>。 具体变更: PrivatePool 新增 allocator_ 成员,分配/释放路径不再依赖全局状态,改为 pool->owner_PrivatePool->allocator()->raw_alloc/raw_delete 删除 MemPoolContext 类及其 thread-local 全局变量 MemPool API变更:allocator() 改为 use_count(),构造函数接收 shared_ptr 而非裸指针 API 重命名:_npu_endAllocateCurrentStreamToPool → _npu_endAllocateToPool 测试重构:将 mempool 测试集中到 test_npu_allocator.py,新增 alloc/free 配对验证和 allocator 先于 tensor 删除的回归测试 # 【资料变更】 删除 MemPoolContext 类及其 thread-local 全局变量 MemPool API变更:allocator() 改为 use_count(),构造函数接收 shared_ptr 而非裸指针 重命名:_npu_endAllocateCurrentStreamToPool → _npu_endAllocateToPool # 【接口变更】 删除 MemPoolContext 类及其 thread-local 全局变量 MemPool API变更:allocator() 改为 use_count(),构造函数接收 shared_ptr 而非裸指针 重命名:_npu_endAllocateCurrentStreamToPool → _npu_endAllocateToPool # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!39284 | 2 个月前 | |
[sync] PR-35335: [feat]: A5 only supports INF_NAN mode Co-authored-by: weixin_47897441<wuyouqi1@h-partners.com> Co-authored-by: wanglijun55<wanglijun54@huawei.com> # message auto-generated for no-merge-commit merge: !35524 merge sync-pr35335-v2.7.1-infnan-to-master into master [sync] PR-35335: [feat]: A5 only supports INF_NAN mode Created-by: ascend-ds-bot Commit-by: weixin_47897441;wanglijun55 Merged-by: ascend-robot Description: ### 1. Origin pull request: https://gitcode.com/Ascend/pytorch/merge_requests/35335 ### 2. Original pull request related issue(s): https://gitcode.com/Ascend/pytorch/issues/1918 ### 3. Original pull request related commit(s): | Sha | Datetime | Message | |---|---|---| |[92382e10](https://gitcode.com/Ascend/pytorch/commit/92382e10973ba5780721b079332366383ec841ff)|2026-05-12 21:49:33 +0800 CST|modify ut<br>| |[1352140c](https://gitcode.com/Ascend/pytorch/commit/1352140cad591b7fc472db91eb726d1b553bd65e)|2026-05-11 20:54:16 +0800 CST|fix(npu): Ascend950 only supports INF_NAN mode, bypass env var checks<br><br>Ascend950 does not support saturation mode. When users set<br>INF_NAN_MODE_ENABLE=0 or INF_NAN_MODE_FORCE_DISABLE=1 on Ascend950,<br>the code incorrectly falls into saturation mode path, causing<br>RuntimeError: SET StreamOverflowSwitch Failed.<br><br>Add early return in IsSupportInfNan() for Ascend950 to always return<br>true, making both env vars ineffective on this device.<br><br>Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com><br>| See merge request: Ascend/pytorch!35524 | 3 个月前 | |
[master][feature][bugfix]support IPC 64k and HDK xx.xx.xx.b version Co-authored-by: Dring<17737727613@163.com> # message auto-generated for no-merge-commit merge: !41738 merge master into master [master][feature][bugfix]support IPC 64k and HDK xx.xx.xx.b version Created-by: Dring Commit-by: Dring Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> https://gitcode.com/Ascend/pytorch/issues/2919 - [✓ ] 需求 - [✕ ] 问题单 - [✕ ] issue/工单 - [✕ ] 重构优化 - [✕ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 64k pagesize,新版本HDK已支持,去除4k校验限制。同时增加HDK b版本判断分支。 版本排序语义:b-build < T版本 < RC版本 < 正式release |版本 |release |关键项 |数值| |--|--|--|--| |26.1.0 |0| (0+1)*10000| 2702010000| |26.1.0.T1| -1 |(1+1)*100| 2702000200| |26.1.0.b083| -1(不设)| +83(patch)| 2702000083| 验证:2702000083 < 2702000200 < 2702010000 → b083 < T1 < 正式版 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 64k页机器 ut验证:   4k页机器 ut验证:  driver版本验证 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [✓ ] 代码注释完备,正确记录错误日志 - [✕ ] 代码实现进行了返回值、空指针等校验 - [ ✓] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [✓ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41738 | 1 个月前 | |
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
fix: lintrunner --all-files --take NEWLINE -a Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35539 merge code_check_lintrunner into master fix: lintrunner --all-files --take NEWLINE -a Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 文件必须以 LF 换行符结尾,不允许 CRLF(DOS 换行),执行: lintrunner --all-files --take NEWLINE -a # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35539 | 3 个月前 | |
[sync] PR-34231: [feat] support PYTORCH_NPU_ALLOC_CONF: large_segment_size_mb Co-authored-by: ffmh<fengminghao2@huawei.com> # message auto-generated for no-merge-commit merge: !35297 merge sync-pr34231-v2.11.0_device_alloc_conf-to-master into master [sync] PR-34231: [feat] support PYTORCH_NPU_ALLOC_CONF: large_segment_size_mb Created-by: ascend-ds-bot Commit-by: ffmh Merged-by: ascend-robot Description: ### 1. Origin pull request: https://gitcode.com/Ascend/pytorch/merge_requests/34231 ### 2. Original pull request related issue(s): https://gitcode.com/Ascend/pytorch/issues/1837 https://gitcode.com/Ascend/pytorch/issues/1795 ### 3. Original pull request related commit(s): | Sha | Datetime | Message | |---|---|---| |[cb41caf6](https://gitcode.com/Ascend/pytorch/commit/cb41caf629213b22c6dbbd5fcc4a881f35401436)|2026-05-08 15:14:02 +0800 CST|fix test case<br>| |[c29273d9](https://gitcode.com/Ascend/pytorch/commit/c29273d9a602ca3a7cb8a739ff063a5139b06ff1)|2026-05-08 10:52:28 +0800 CST|fix lint<br>| |[22920c40](https://gitcode.com/Ascend/pytorch/commit/22920c404be36851784cc76d9f55b41e930315f0)|2026-05-08 10:06:46 +0800 CST|remove redundant code<br>| |[773d5eef](https://gitcode.com/Ascend/pytorch/commit/773d5eefc12a23164b17722c3628ddcf681eca96)|2026-04-23 19:24:35 +0800 CST|support PYTORCH_NPU_ALLOC_CONF: large_segment_size_mb<br>| See merge request: Ascend/pytorch!35297 | 3 个月前 | |
[feat] support environment variable LD_PRELOAD Co-authored-by: liujunzhu<liujunzhu@huawei.com> # message auto-generated for no-merge-commit merge: !34275 merge master into master [feat] support environment variable LD_PRELOAD Created-by: liujunzhu Commit-by: liujunzhu Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 用户自实现 aclrtMallocAlign32 等 ACL 符号并打包成 .so,通过 LD_PRELOAD 注入 torch_npu 进程,期望拦截对 ACL 函数的调用,但实际未被调用。 根因:torch_npu 中部分 ACL 函数(如 aclrtMallocAlign32、aclrtFreePhysical)通过 FunctionLoader::Get() 使用 dlsym(handle, name) 查找符号,该方式限定在 handle 对应的库中查找,不搜索 LD_PRELOAD 预加载的库,导致覆盖失效。而直接链接调用的 ACL 符号(如 aclrtFree)走 PLT 全局符号解析,天然支持 LD_PRELOAD。 修改方案: 1. 修改 FunctionLoader::Get() 方法,当 LD_PRELOAD 环境变量非空时,优先通过 dlsym(RTLD_DEFAULT, name) 在全局符号表中查找函数,使 LD_PRELOAD 注入的同名符号可被命中;未命中时回落原有 dlopen + dlsym(handle) 路径。 2. 以 LD_PRELOAD 非空作为门控条件,未设置时完全走旧路径,行为与修改前一致。 3. 仅修改 torch_npu/csrc/core/npu/register/FunctionLoader.cpp,不新增头文件、不改变调用方。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 测试场景:通过 LD_PRELOAD 注入自定义 aclrtMallocAlign32 实现,验证 FunctionLoader 路径的符号可被覆盖。 测试方法:子进程隔离测试,每个用例在独立子进程中设置不同 LD_PRELOAD 环境变量。 | 测试用例 | 验证内容 | |---------|---------| | 无 LD_PRELOAD | 行为与修改前一致,hook 不被调用 | | LD_PRELOAD 设置 hook so | aclrtMallocAlign32 被 hook 拦截 | | LD_PRELOAD 设置不含 ACL 符号的 so | 正确回落到原始库,功能不受影响 | | LD_PRELOAD 多 so | 先加载的 hook 优先命中 | 新增测试文件:test/npu/test_ld_preload_acl_hook.py。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34275 | 4 个月前 | |
[master]test: add clone coverage for torch.autograd.grad_mode.set_grad_enabled Co-authored-by: Zky0803<kyzhang0803@163.com> # message auto-generated for no-merge-commit merge: !42445 merge pr/set-grad-enabled-clone into master [master]test: add clone coverage for torch.autograd.grad_mode.set_grad_enabled Created-by: Zky0803 Commit-by: Zky0803 Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 - 来源任务 Issue:[【社区任务】7月社区任务第二期-Ascend for PyTorch API 一致性开发(31)](https://gitcode.com/Ascend/pytorch/issues/2954) - 结果 Issue:[torch.autograd.grad_mode.set_grad_enabled.clone API 一致性补齐](https://gitcode.com/Ascend/pytorch/issues/3102) # 【分支范围】 本 PR 面向 master 目标分支。 本任务整体覆盖: text master、v2.7.1、v2.11.0、v2.12.0 v2.9.0、v2.10.0 已进入维护阶段,不再合入新特性或本类新增测试,因此本任务 不再对这两个分支作补齐要求。 # 【修改方案】 本次仅补充 torch.autograd.grad_mode.set_grad_enabled.clone 的 NPU 单元测试, 不修改 API 实现。 修改文件: text test/npu/test_locally_disabling_gradient_omputation.py 整改后提交: text 源分支:pr/set-grad-enabled-clone Commit:5cc7df026d176e95786ecec387b2c8f54d64d6d1 提交标题:test: add clone coverage for set_grad_enabled 文件 SHA-256:642c2b526d025de467b3b1ef728526b64977e22485ceafb0e8c60a58f25b1120 文件头增加 Huawei BSD 3-Clause copyright 和 API 覆盖说明: python # Copyright (c) 2026 Huawei Technologies Co., Ltd # All rights reserved. # # Licensed under the BSD 3-Clause License (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://opensource.org/licenses/BSD-3-Clause # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Add validation cases for gradient-mode APIs on NPU. This file validates torch.no_grad, torch.enable_grad, torch.set_grad_enabled, and torch.autograd.grad_mode.set_grad_enabled.clone, including clone object independence, mode preservation, grad-mode restoration, and decorator behavior with NPU tensors. """ ## 1. clone 直接行为 整改后的 test_set_grad_enabled_clone: python def test_set_grad_enabled_clone(self): initial_grad_enabled = torch.is_grad_enabled() with torch.set_grad_enabled(initial_grad_enabled): for mode in (False, True): ctx = torch.set_grad_enabled(mode) cloned = ctx.clone() self.assertIsNot(ctx, cloned) self.assertIsInstance( cloned, torch.autograd.grad_mode.set_grad_enabled, ) self.assertEqual(cloned.mode, mode) self.assertEqual(torch.is_grad_enabled(), initial_grad_enabled) 验证: - torch.set_grad_enabled(False).clone(); - torch.set_grad_enabled(True).clone(); - clone 后对象与原对象不是同一实例; - clone 后对象类型保持; - clone 后 mode 状态保持; - 测试结束后线程 grad mode 与测试开始时一致。 ## 2. NPU Tensor 装饰器调用链 整改后的 test_set_grad_enabled_clone_decorator: python def test_set_grad_enabled_clone_decorator(self): initial_grad_enabled = torch.is_grad_enabled() x = torch.tensor( [1.0], device="npu:0", requires_grad=True, ) with torch.set_grad_enabled(initial_grad_enabled): @torch.set_grad_enabled(False).clone() def grad_disabled(tensor): return tensor * 2 with torch.enable_grad(): disabled_result = grad_disabled(x) self.assertEqual(disabled_result.device, x.device) self.assertFalse(disabled_result.requires_grad) @torch.set_grad_enabled(True).clone() def grad_enabled(tensor): return tensor * 2 with torch.no_grad(): enabled_result = grad_enabled(x) self.assertEqual(enabled_result.device, x.device) self.assertTrue(enabled_result.requires_grad) self.assertEqual(torch.is_grad_enabled(), initial_grad_enabled) 该用例在测试代码中显式调用: python torch.set_grad_enabled(False).clone() torch.set_grad_enabled(True).clone() 并直接验证: - 外层梯度开启时,clone 后的 mode=False 装饰器使 NPU 输出 requires_grad=False; - 外层 torch.no_grad() 时,clone 后的 mode=True 装饰器使 NPU 输出 requires_grad=True; - 输出 Tensor 仍位于输入 NPU 设备; - 测试结束后线程 grad mode 恢复。 ## 3. 导入清理 继续保持移除冗余的: python import torch_npu # noqa: F401 当前通过: python from torch_npu.testing.testcase import TestCase, run_tests 使用项目测试基类和测试入口,不使用 noqa 掩盖未使用导入。 本次不涉及: - PyTorch API 功能实现; - Torch-NPU C++ 适配; - NPU Kernel; - test_upstream patch; - 跨代码仓接口变更。 # 【社区用例检索与新增必要性】 在 upstream/master(5b6990f5a332dc9a585c66fee64f721e1fcc2d46)中执行: bash git grep -n -E \ 'set_grad_enabled.*clone|clone.*set_grad_enabled|test_.*set_grad_enabled.*clone' \ -- test 直接 clone 测试匹配数: text 0 相关基础测试包括: - test/test_autograd.py::test_set_grad_enabled - test/test_autograd.py::test_set_grad_enabled_wraps - test/npu/test_locally_disabling_gradient_omputation.py::test_set_grad_enabled 这些用例覆盖基础上下文管理器或通用装饰器行为,但没有直接检查 clone 后对象的 身份、类型和 mode,没有验证测试前后线程 grad mode 保持,也没有使用 clone 后对象作为装饰器对 NPU Tensor 输出进行断言。因此需要在现有 Torch-NPU NPU 测试文件中新增本用例,不能直接以社区基础用例替代。 # 【资料变更】 涉及。 torch.autograd.grad_mode.set_grad_enabled.clone 为 PyTorch 对外公开的 set_grad_enabled 子方法。经资料补齐要求复核,当前 Torch-NPU Native API 资料仅登记父 API,缺少 clone() 子方法,因此本任务另行提交资料补齐 PR。 资料补齐信息: text 目标分支:master 源分支:docs/set-grad-enabled-clone 基线提交:462f4e18a8303698aca3997edfcc5dd3b1707968 资料提交:fcc55fd51dc6e4ba5a4068cb9805d15a59021bc3 提交标题:docs: add support status for set_grad_enabled.clone 资料 PR:[PR #44139](https://gitcode.com/Ascend/pytorch/pull/44139) 资料修改文件: text docs/zh/api/native_api/pytorch_2-7-1/torch.md docs/zh/api/native_api/pytorch_2-11-0/torch.md docs/zh/api/native_api/pytorch_2-12-0/torch.md docs/zh/api/native_api/pytorch_2-13-0/torch.md 资料中将 clone() 作为 torch.autograd.grad_mode.set_grad_enabled 的子方法登记,支持状态与父 API 保持一致: - Atlas A2 训练系列产品:支持; - Atlas A3 训练系列产品:支持; - Ascend 950DT:暂不支持。 该 API 为非计算类上下文对象复制方法,与 Tensor 数据类型无关,因此资料中不 增加 fp16、fp32、bf16 等 dtype 限制说明。 资料分支已完成本地检查并成功推送,diff --check、四版本条目覆盖及远端 SHA 验证均通过。 # 【接口变更】 不涉及。 本次不修改函数实现、接口签名、返回类型或其他组件交互。 # 【功能验证】 ## 环境 text 目标分支:master torch:2.12.0+cu130 torch-npu:2.12.0.rc1 NPU available:True NPU device count:1 ## 命令 bash python test/npu/test_locally_disabling_gradient_omputation.py -v 隔离验证还分别从初始 grad mode 为 False 和 True 的状态执行两个 clone 测试。 ## 测试场景 text test_enable_grad test_no_grad test_set_grad_enabled test_set_grad_enabled_clone test_set_grad_enabled_clone_decorator 隔离验证场景: text initial=False → before=False → after=False initial=True → before=True → after=True ## 完整原始输出 ``text ================================================== TARGET_BRANCH=master SOURCE_BRANCH=pr/set-grad-enabled-clone COMMIT=5cc7df026d176e95786ecec387b2c8f54d64d6d1 PYTHON=envs/torch_npu_2.12.0/bin/python TEST_FILE=/tmp/set_grad_enabled_clone_final_tests_590/master/test/npu/test_locally_disabling_gradient_omputation.py TEST_FILE_SHA256=642c2b526d025de467b3b1ef728526b64977e22485ceafb0e8c60a58f25b1120 ================================================== ===== ENVIRONMENT PROBE ===== python_executable=/workspace/user_data/torch_npu_api_check/check_close_args/envs/torch_npu_2.12.0/bin/python python_version=3.11.15 platform=Linux-5.10.0-216.0.0.115.oe2203sp4.aarch64-aarch64-with-glibc2.35 torch_version=2.12.0+cu130 torch_npu_version=2.12.0.rc1 torch_file=/workspace/user_data/torch_npu_api_check/check_close_args/envs/torch_npu_2.12.0/lib/python3.11/site-packages/torch/__init__.py torch_npu_file=/workspace/user_data/torch_npu_api_check/check_close_args/envs/torch_npu_2.12.0/lib/python3.11/site-packages/torch_npu/__init__.py npu_available=True npu_device_count=1 initial_grad_enabled=True ENVIRONMENT_PROBE_EXIT_CODE=0 ===== FULL TEST FILE ===== COMMAND=env -u PYTHONPATH PYTHONNOUSERSITE=1 envs/torch_npu_2.12.0/bin/python /tmp/set_grad_enabled_clone_final_tests_590/master/test/npu/test_locally_disabling_gradient_omputation.py -v W0801 11:27:23.084000 39660 torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) test_enable_grad (__main__.TestLDGComputation.test_enable_grad) ... [W801 11:27:30.117500740 NPUCachingAllocator.cpp:199] Warning: The current CANN and Soc versions require processing for 32 padding size, with memory allocation. (function operator()) ok test_no_grad (__main__.TestLDGComputation.test_no_grad) ... ok test_set_grad_enabled (__main__.TestLDGComputation.test_set_grad_enabled) ... ok test_set_grad_enabled_clone (__main__.TestLDGComputation.test_set_grad_enabled_clone) ... ok test_set_grad_enabled_clone_decorator (__main__.TestLDGComputation.test_set_grad_enabled_clone_decorator) ... ok ---------------------------------------------------------------------- Ran 5 tests in 0.586s OK FULL_TEST_EXIT_CODE=0 ===== GRAD MODE ISOLATION PROBE ===== W0801 11:28:45.547000 40098 torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl` (importlib.util.find_spec(nvidia_cutlass_dsl) failed) test_set_grad_enabled_clone (set_grad_enabled_clone_test_module.TestLDGComputation.test_set_grad_enabled_clone) ... ok test_set_grad_enabled_clone_decorator (set_grad_enabled_clone_test_module.TestLDGComputation.test_set_grad_enabled_clone_decorator) ... [W801 11:28:51.477959420 NPUCachingAllocator.cpp:199] Warning: The current CANN and Soc versions require processing for 32 padding size, with memory allocation. (function operator()) ok ---------------------------------------------------------------------- Ran 2 tests in 0.203s OK test_set_grad_enabled_clone (set_grad_enabled_clone_test_module.TestLDGComputation.test_set_grad_enabled_clone) ... ok test_set_grad_enabled_clone_decorator (set_grad_enabled_clone_test_module.TestLDGComputation.test_set_grad_enabled_clone_decorator) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.002s OK PROCESS_ORIGINAL_GRAD_MODE=True ISOLATION_RESULT=initial:False,before:False,after:False,t See merge request: Ascend/pytorch!42445 | 27 天前 | |
| 2 年前 | ||
AI assist developer for python dt third batch for master Co-authored-by: deepSeekya<chenzhihan6@huawei.com> # message auto-generated for no-merge-commit merge: !26524 merge master into master AI assist developer for python dt third batch for master Created-by: deepSeekya Commit-by: deepSeekya Merged-by: ascend-robot Description: 【合入说明】 AI辅助研发python dt测试用例生成。 【合入来源】 AI辅助研发需求 dt测试文件覆盖率提升。 See merge request: Ascend/pytorch!26524 | 9 个月前 | |
[feat] add ~mempool() with emptyCache Co-authored-by: xuyun15<xuyun15@huawei.com> # message auto-generated for no-merge-commit merge: !39193 merge releaseMemPool_master into master [feat] add ~mempool() with emptyCache Created-by: xuyun15 Commit-by: xuyun15 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [x] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 **目标模块 / Feature:** MemPool 析构与指定池内存释放 该改动的核心目标是:**实现 MemPool 对象析构时自动释放其关联的内存池资源**,解决 MemPool 缺少析构函数导致的内存泄漏问题。 ### 1. feature 核心工作机制 该改动实现了 MemPool 的 RAII 析构机制: - **MemPool 构造时**:记录当前设备索引 device_,生成唯一池 ID id_ - **MemPool 析构时**:调用 releasePool(device_, id_) 减少引用计数并标记可释放,再调用 emptyCache(id_) 精确释放该池的缓存内存 - **emptyCache 扩展**:新增 mempool_id 参数,支持只释放指定池的缓存,避免影响其他池 - **synchronize_and_free_events 扩展**:新增 pool 过滤参数,支持只同步特定池的事件,减少不必要的同步开销 - **graph_pool_handle 静态化**:将池 ID 生成逻辑提取为静态方法,避免创建临时 MemPool 对象:该步骤目的是保证修改前后graph行为一致,且与社区行为一致。如果NPUGraph中仍然使用临时MemPool,会由于新增的析构函数导致多次releasePool,这样导致TORCH_INTERNAL_ASSERT(it != graph_pools.end());报错 ### 2. 核心调用路径 MemPool::~MemPool() → NPUCachingAllocator::releasePool(device_, id_) // 引用计数管理 → DeviceCachingAllocator::releasePool(mempool_id) → use_count-- → 插入 graph_pools_freeable → NPUCachingAllocator::emptyCache(id_) // 缓存释放 → NPUCachingAllocator::emptyCache(check_error, free_physical, mempool_id) → DeviceCachingAllocator::emptyCache(..., mempool_id) → release_cached_blocks(..., mempool_id) → synchronize_and_free_events(..., pool) // 只同步该池事件 → release_blocks(small_blocks/large_blocks) // 释放该池缓存块 → graph_pools.erase (若 npuMalloc_count==0) ### 3. 核心数据结构 - MemPool:新增 device_ 成员(c10::DeviceIndex),新增析构函数、device() 方法、graph_pool_handle() 静态方法 - MempoolId_t:std::pair<CaptureId_t, CaptureId_t>,{0,0} 表示"未指定池" - PrivatePool:持有 use_count(图引用计数)和 npuMalloc_count(未释放分配数) - graph_pools_freeable:ska::flat_hash_map<MempoolId_t, PrivatePool*>,记录可释放的池 ### 4. 推荐阅读顺序 1. torch_npu/csrc/core/npu/NPUCachingAllocator.h:563-603 — MemPool 类定义,理解新增接口 2. torch_npu/csrc/core/npu/NPUCachingAllocator.cpp:3997-4022 — MemPool 析构函数、device()、graph_pool_handle() 实现 3. torch_npu/csrc/core/npu/NPUCachingAllocator.cpp:2181-2212 — releasePool 引用计数管理 4. torch_npu/csrc/core/npu/NPUCachingAllocator.cpp:1643-1665 — emptyCache 设备级实现 5. torch_npu/csrc/core/npu/NPUCachingAllocator.cpp:2810-2848 — release_cached_blocks 指定池释放 6. torch_npu/csrc/core/npu/NPUCachingAllocator.cpp:3000-3048 — synchronize_and_free_events 池过滤 7. torch_npu/csrc/core/npu/NPUGraph.cpp:42-47 — graph_pool_handle() 改用静态方法 8. test/npu/test_mempool_destructor.py — 测试用例 ### 5. 可能存在的API一致性以及ABI兼容性问题 1. **vtable 布局变化**:NPUAllocator 基类新增虚函数 emptyCache(bool, bool, MempoolId_t),所有继承该基类的第三方代码需重新编译 2. **MemPool 类大小变化**:新增 device_ 成员改变了 sizeof(MemPool),直接操作 MemPool 对象的已编译代码需重新编译 3. **Python 绑定不完整(涉及到api,当前需求暂不做该步骤,后续社区一致性需求补齐)**:新增的 device() 和 graph_pool_handle() 方法未绑定到 Python,Python 用户无法调用 4. **NPUPluggableAllocator 不支持(cuda带mempool_id的行为与不带mempool_id行为一致,所以暂时无需支持)**:带 mempool_id 的 emptyCache 仅打印警告,使用可插拔分配器时 MemPool 析构不会释放内存 5. **Python 侧 empty_cache 未暴露 mempool_id(涉及到api,当前需求暂不做该步骤,后续社区一致性需求补齐)**:torch.npu.empty_cache() 仍只调用无参版本,用户无法从 Python 手动释放指定池的缓存 ### 6、注意特性: 1、torch_npu/csrc/npu/MemPool.cpp : 参考cuda,pyblind过程初始化npu。解决mempool初始化未识别device的问题 2、torch_npu/csrc/core/npu/NPUCachingAllocator.cpp: 参考cuda,新增createOrIncrefPool 3、torch_npu/npu/memory.py :参考cuda,新增torch_npu._C._npu_releasePool(device_index, pool.id),解决第2点会带来use_count+1的问题 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 新增ut,库上为去掉print的版本: 优化前:  优化后:  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!39193 | 2 个月前 | |
【feat】mstx support push and pop Co-authored-by: mei-feiyao<meifeiyao@h-partners.com> # message auto-generated for no-merge-commit merge: !36205 merge rangem into master 【feat】mstx support push and pop Created-by: mei-feiyao Commit-by: mei-feiyao Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\https://gitcode.com/Ascend/pytorch/issues/2033 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 对齐社区nvtx模块,补全接口,包括如下: 1、range_push、range_pop:线程粒度的打range点接口,内部走mstx库实现打点,用户可通过torch_npu.profiler接口配置mstx=True或者msproftx=True(待废弃)的方式采集tx打点数据; 2、annotate类:用户可通过with torch_npu.npu.mstx.annotate(message="xxxx", stream=xxxx, domain="tttt")的方式或者@torch_npu.npu.mstx.annotate(message="xxxx", stream=xxxx, domain="tttt")装饰器的方式对目标代码段或者目标函数进行打点,内部会在开始和结束的阶段分别调用range_push和range_pop # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 是。涉及新增接口,已联系资料同学补充资料 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 本需求只涉及新增接口,不涉及已有接口变更 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 1、UT测试验证新增接口; 2、模型代码增加调用新增的打点接口,并通过profiler采集打点数据,观察打点数据正常 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!36205 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
[feature] aclgraph support PYTORCH_NO_NPU_MEMORY_CACHING=1 master Co-authored-by: yurongkun<yurongkun@huawei.com> # message auto-generated for no-merge-commit merge: !35070 merge no_cache_master into master [feature] aclgraph support PYTORCH_NO_NPU_MEMORY_CACHING=1 master Created-by: yurongkun Commit-by: yurongkun Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > aclgraph支持PYTORCH_NO_NPU_MEMORY_CACHING 1)裸调capture时,打开PYTORCH_NO_NPU_MEMORY_CACHING不会报错,正常运行。 2)如果当前内存池无其他图持有且图内对象无依赖内存池时,释放该内存池给驱动 # 【资料变更】 > 不涉及 # 【接口变更】 > 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 新增UT看护,并运行多种场景用例。无运行报错 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35070 | 3 个月前 | |
test: restrict accelerator default generator UTs to torch >= 2.14 via runIfVersion Co-authored-by: wanglijun55<wanglijun54@huawei.com> # message auto-generated for no-merge-commit merge: !44953 merge branch-test into master test: restrict accelerator default generator UTs to torch >= 2.14 via runIfVersion Created-by: wanglijun55 Commit-by: wanglijun55 Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/3809 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 1. test/npu/test_npu.py 中 test_accelerator_get_default_generator 与 test_accelerator_get_default_generator_per_device 两个用例添加 @runIfVersion(min="2.14") 装饰器,限制用例仅在 torch 2.14 及以上版本运行。 2. 新增 from test.utils.version_mark import runIfVersion 导入,与仓库既有 版本标记机制(CI 文件级过滤 + 运行时跳过)保持一致。 # 【资料变更】 不涉及。 # 【接口变更】 不涉及。 # 【功能验证】 bash # 在 torch >= 2.14 环境运行,用例正常执行 pytest ./test/npu/test_npu.py -k "test_accelerator_get_default_generator or test_accelerator_get_default_generator_per_device" # 在 torch < 2.14 的 CI 目标版本区间(CI_VERSION_MAX=2.13)下运行,用例被 skip CI_VERSION_MAX=2.13 pytest ./test/npu/test_npu.py -k "test_accelerator_get_default_generator or test_accelerator_get_default_generator_per_device" # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!44953 | 19 天前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
add torch.npu._sleep Co-authored-by: nomiz<1606135114@qq.com> # message auto-generated for no-merge-commit merge: !42709 merge master into master add torch.npu._sleep Created-by: nomiz Commit-by: nomiz Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> https://gitcode.com/Ascend/pytorch/issues/3339 # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [x] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 新增torch.npu._sleep接口,功能对齐 torch.cuda._sleep,用于在当前 NPU Stream 上插入一个指定周期的忙等待(spin-wait)操作。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 ut用例验证通过截图  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!42709 | 1 个月前 | |
feat: Add ACLGraph update plans Co-authored-by: luochao60<luochao60@huawei.com> # message auto-generated for no-merge-commit merge: !38052 merge Pynative_refactor_aclgraph_update_20260519_master into master feat: Add ACLGraph update plans Created-by: luochao60 Commit-by: luochao60 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 > 关联 issue: #2338 (https://gitcode.com/Ascend/pytorch/issues/2338) - [ ] 需求 - [x] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列 > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 1. 新增 torch_npu._inductor.aclgraph_update_plan 模块,在 Inductor codegen 阶段生成 ACLGraph update plan,并在运行期根据 callable 属性解析 new_inputs 到 FA 类算子 actual sequence 参数的映射。 2. 在 NPU Python wrapper、MLIR/DVM wrapper、graph partition 子图 wrapper 中挂载 plan,支持 graph partition 开关下分别写入 call 或 partition_x 函数属性。 3. 在 _graph_tree record/replay 路径消费 update plan,record 后校验 plan 与真实 capture record 的顺序、算子名和可更新 key,replay 前解析为 CPU update input。 4. 将 IFA/IFA v2/FA3 等 npugraph handler 的 actual sequence 更新点改为 UPDATE_SPECS 声明式描述,并由 base handler 统一更新 args/kwargs。 5. 补充 plan 构建、plan 解析、handler 注册、wrapper emit、npugraphify callable 属性保持等单元测试,替换旧的集中测试文件。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 不涉及对外资料变更。 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及客户面可见 API 变更;新增 torch_npu._inductor.aclgraph_update_plan 为内部编译与 ACLGraph 运行期协同模块。 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤 > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 已补充并验证以下单测: 1. test/npu/test_aclgraph_update_plan.py 覆盖 plan 构建、输入映射、常量解析、非法 plan 校验。 2. test/npu/test_npugraph_handler.py 覆盖 IFA/IFA v2 handler 的 UPDATE_SPECS 注册。 3. test/_inductor/test_aclgraph_update_plan_compile.py 覆盖 wrapper/graph partition emit、MLIR/DVM wrapper、npugraphify callable 属性保持等非设备单测。 4. 多版本迁移后已在 v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0、master 分支通过静态检查和不涉及设备的单测验证。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!38052 | 2 个月前 | |
support torch.npu.npurt Co-authored-by: bellatan<tanmei2@huawei.com> # message auto-generated for no-merge-commit merge: !39329 merge torch_npurt into master support torch.npu.npurt Created-by: bellatan Commit-by: bellatan 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/2504 # 【资料变更】 新增接口 torch.npu.npurt() # 【接口变更】 新增接口 torch.npu.npurt() # 【功能验证】  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!39329 | 2 个月前 | |
| 2 年前 | ||
test: add NPU coverage for Optimizer.zero_grad Co-authored-by: JfanLiu<1300083451@qq.com> # message auto-generated for no-merge-commit merge: !43540 merge test-optimizer-zero-grad-master into master test: add NPU coverage for Optimizer.zero_grad Created-by: JfanLiu Commit-by: JfanLiu Merged-by: ascend-robot Description: ## Related issue https://gitcode.com/Ascend/pytorch/issues/2739 ## Change summary - Add test/npu/test_optimizer_zero_grad.py. - Cover default behavior, boolean values, truthy/falsy int and list values, and invalid call signatures on NPU. ## Local validation - Target branch: master - Command: python /workspace/user_data/tasks/optimizer-zero-grad/pytorch-master/test/npu/test_optimizer_zero_grad.py -v - Result: 4 tests passed on Ascend NPU. ## Notes - This change does not modify implementation code. - Previous PR: none. See merge request: Ascend/pytorch!43540 | 24 天前 | |
add test for TORCH_ACL_INIT_CONFIG_PATH Co-authored-by: huangyunlong2022<huangyunlong4@h-partners.com> # message auto-generated for no-merge-commit merge: !39912 merge 2.13aclj into master add test for TORCH_ACL_INIT_CONFIG_PATH Created-by: huangyunlong2022 Commit-by: huangyunlong2022 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 为自定义配置acl.json路径添加校验 对自定义配置acl.json路径校验报错时添加修复提示 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!39912 | 2 个月前 | |
| 2 年前 | ||
[sync] PR-34238: [feat] support PYTORCH_NPU_ALLOC_CONF: per_process_memory_fraction Co-authored-by: ffmh<fengminghao2@huawei.com> # message auto-generated for no-merge-commit merge: !35472 merge sync-pr34238-v2.11.0_device_alloc_conf_ppmf-to-master into master [sync] PR-34238: [feat] support PYTORCH_NPU_ALLOC_CONF: per_process_memory_fraction Created-by: ascend-ds-bot Commit-by: ffmh Merged-by: ascend-robot Description: ### 1. Origin pull request: https://gitcode.com/Ascend/pytorch/merge_requests/34238 ### 2. Original pull request related issue(s): https://gitcode.com/Ascend/pytorch/issues/1796 https://gitcode.com/Ascend/pytorch/issues/1837 ### 3. Original pull request related commit(s): | Sha | Datetime | Message | |---|---|---| |[2192500c](https://gitcode.com/Ascend/pytorch/commit/2192500c7c6cea10d297beab3943881d7e50333d)|2026-05-09 18:25:18 +0800 CST|fix test case<br>| |[12dd3694](https://gitcode.com/Ascend/pytorch/commit/12dd36948537a5e5457be1d9d5313c37e8914363)|2026-05-09 18:25:17 +0800 CST|refactor allowed_memory_maximum according to cuda caching allocator<br>| |[92c06b95](https://gitcode.com/Ascend/pytorch/commit/92c06b95e74b7e4109d7251f24486895df7e094c)|2026-05-09 18:25:17 +0800 CST|support PYTORCH_NPU_ALLOC_CONF: per_process_memory_fraction<br>| See merge request: Ascend/pytorch!35472 | 3 个月前 | |
fix: lintrunner --all-files --take NEWLINE -a Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35539 merge code_check_lintrunner into master fix: lintrunner --all-files --take NEWLINE -a Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 文件必须以 LF 换行符结尾,不允许 CRLF(DOS 换行),执行: lintrunner --all-files --take NEWLINE -a # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35539 | 3 个月前 | |
| 1 年前 | ||
test: add NPU coverage for profile.total_average Co-authored-by: JfanLiu<1300083451@qq.com> # message auto-generated for no-merge-commit merge: !43573 merge profile-total-average-master into master test: add NPU coverage for profile.total_average Created-by: JfanLiu Commit-by: JfanLiu Merged-by: ascend-robot Description: ## 关联 issue https://gitcode.com/Ascend/pytorch/issues/2728 ## API 功能 torch.autograd.profiler.profile.total_average() 在 profile 上下文结束后调用,对采集到的全部事件返回聚合统计对象(key 为 "Total",FunctionEventAvg 类型)。该聚合对象汇总整个 profile 周期内各事件的耗时统计(如 cpu_time_total、device_time_total 等字段);当 profile 周期内没有任何事件时,返回各统计字段均为 0 的零聚合对象。该 API 无入参,用于快速获取 profiling 的整体平均统计。 ## 官方用例情况 检索官方 test/ 目录后确认:官方 test/test_profiler*.py 仅覆盖 profile 的采集与输出能力,未发现针对 total_average() 聚合结果的直接测试用例。本 PR 补充 NPU 侧的直接覆盖。 ## 测试场景覆盖 新增 test/npu/test_profile_total_average.py,覆盖以下场景: - 在 NPU 上执行 torch.randn/torch.mm 计算并 torch.npu.synchronize() 后,total_average() 返回非空聚合对象:key == "Total" 且 cpu_time_total > 0,验证 NPU 上的事件被正确聚合 - 空 profile(上下文内无任何事件)时,total_average() 返回 key == "Total"、cpu_time_total == 0 的零聚合边界用例 - 说明:NPU 上 device_time_total 上报不稳定,本用例仅对 key/cpu_time_total 做语义断言 ## 资料补齐情况 该 API 为 PyTorch 原生 API,Native API 资料中无单独 Restrictions/Notes 限制条目(无限制即与原生行为一致)。本 PR 仅补充测试,不涉及 native API 文档修改。 ## 运行命令与日志 - 分支:master - 环境:Ascend 910(npu-smi 25.5.1)+ CANN 9.1.0-beta.1 + Python 3.12.13;本地验证使用 torch 2.12.0+cu130 / torch_npu 2.12.0(master_py312 环境近似验证,跨版本以 CI 为准) - 命令: bash cd /workspace unset PYTHONPATH /workspace/venvs/master_py312/bin/python /workspace/user_data/tasks/profile-total-average-2728-20260812/worktrees/master/test/npu/test_profile_total_average.py -v - 结果:Ran 2 tests ... OK(退出码 0) ## 变更说明 - 新增 test/npu/test_profile_total_average.py,仅补充测试,不修改任何实现代码 - Source: JfanLiu:profile-total-average-master,Target: master - Previous PR: none See merge request: Ascend/pytorch!43573 | 5 天前 | |
Release 2.14.0 Co-authored-by: wuyouqi1<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !45390 merge feat/v2.14.0-release into master Release 2.14.0 Created-by: wuyouqi1 Commit-by: wuyouqi1 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/1923 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 社区演进和版本升级,参考 !40367(Release 2.13.0),进行 2.14 切分支与出包适配,依赖切换至 torch 2.14.0(stable whl/cpu),并预置 2.15 开发线 requirements 轮转。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写"不涉及" 涉及:SUPPORT.md / SUPPORT.en.md、SECURITYNOTE.md 版本信息随本 PR 同步更新 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写"不涉及" 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 bash ci/build.sh --python=3.10 --torch=2.14.0 版本校验通过;torch 2.14.0+cpu / torchvision 0.29.0+cpu 已在 whl/cpu stable 通道确认可获取。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45390 | 4 天前 | |
test: add NPU coverage for torch._C._autograd._push_saved_tensors_default_hooks Co-authored-by: JfanLiu<1300083451@qq.com> # message auto-generated for no-merge-commit merge: !43307 merge test-saved-tensors-default-hooks-master into master test: add NPU coverage for torch._C._autograd._push_saved_tensors_default_hooks Created-by: JfanLiu Commit-by: JfanLiu Merged-by: ascend-robot Description: ## 关联 issue https://gitcode.com/Ascend/pytorch/issues/2738 ## API 功能 torch._C._autograd._push_saved_tensors_default_hooks(pack_hook, unpack_hook) 注册默认的 saved-tensor hooks:在反向传播保存 tensor 时调用 pack_hook,取回保存的 tensor 时调用 unpack_hook,两者按“pack 返回值 → unpack 入参”成对配套。_pop_saved_tensors_default_hooks() 弹出最近一次 push 的 hook 对并恢复上一层(或默认行为)。约束:pack_hook 抛出的异常会向调用方传播;unpack_hook 必须返回 Tensor,否则抛 TypeError;多次 push 时按栈顺序嵌套生效(仅最内层生效,pop 后外层恢复)。 ## 上游覆盖依据 在本仓库工作区检索上游测试(rg -l "_push_saved_tensors_default_hooks|saved_tensors_hooks" test/)后确认: - 上游 test/test_autograd.py 仅有公共 API torch.autograd.graph.saved_tensors_hooks 的用例(如 TestAutograd.test_saved_tensors_hooks*),无对私有 C API torch._C._autograd._push_saved_tensors_default_hooks 的直接覆盖; - test/dynamo/test_ctx_manager.py 仅覆盖 disable_saved_tensors_hooks 相关场景; - 上游 test/npu/ 下无该 API 的 NPU 专项覆盖。 因此本 PR 在 test/npu/ 下新增独立测试文件 test_push_saved_tensors_default_hooks.py,直接验证私有 C API 在 NPU 上的行为。 ## 测试场景覆盖 新增 test/npu/test_push_saved_tensors_default_hooks.py,覆盖以下场景: - 基础 hook 流程:NPU tensor 反向传播((a * a).sum().backward())中 pack_hook/unpack_hook 各被调用 2 次;pack 入参均为 NPU tensor;unpack 入参为字典形式 payload(pack 返回值原样传给 unpack);结束后 pop 恢复默认行为 - 异常约束:pack_hook 抛 RuntimeError 时异常传播到调用方;unpack_hook 返回非 Tensor 时抛 TypeError - 嵌套 push/pop 栈序:嵌套 push 时仅最内层 hook 对生效(外层不触发);pop 内层后外层恢复生效;全部 pop 后恢复默认行为(hook 不再被调用) ## 资料补齐情况 该 API 为 PyTorch 私有 autograd 接口,无独立 native API 文档条目,本次仅补充测试,不涉及资料修改。 ## 运行命令与日志 - 分支:master - 环境:Ascend910_9382 + CANN 9.1.0-beta.1 + Python 3.12.13 - torch / torch_npu:2.13.0+cpu / 2.13.0+gitc9c95da - 命令:python test/npu/test_push_saved_tensors_default_hooks.py -v - 结果:Ran 3 tests ... OK ## 变更说明 - 新增 test/npu/test_push_saved_tensors_default_hooks.py,仅补充测试,不修改任何实现代码 - Source: JfanLiu:test-saved-tensors-default-hooks-master,Target: master - Previous PR: none See merge request: Ascend/pytorch!43307 | 5 天前 | |
test: add empty affine quantized tests for NPU Co-authored-by: PAGEMRW<985608880@qq.com> # message auto-generated for no-merge-commit merge: !41804 merge test-empty-affine-quantized-master into master test: add empty affine quantized tests for NPU Created-by: PAGEMRW Commit-by: PAGEMRW Merged-by: ascend-robot Description: 关联 Issue:#3012 PyTorch 社区用例主要通过量化张量的 View 类算子间接覆盖 torch._empty_affine_quantized,缺少可独立执行的 NPU API 级验证用例,故新增测试文件,用于验证该 API 在 NPU 上的正确性。 【修改方案】 一、API 功能说明 1. torch._empty_affine_quantized 用于创建使用逐张量仿射量化方案的空量化张量,主要参数包括: - size:张量形状; - scale:量化缩放比例; - zero_point:量化零点; - dtype:量化数据类型,如 torch.quint8、torch.qint8; - device:张量所在设备。 返回的张量采用 torch.per_tensor_affine 量化方案。由于该接口创建的是未初始化张量,本次测试仅验证张量属性和量化元数据,不验证张量内部数值。 二、测试文件 test_quantized_tensor_creation.py 完整验证该 API 的原因 该测试用例从基础属性、边界形状和参数兼容性三个方面验证 torch._empty_affine_quantized: 1. 基础属性验证 test_empty_affine_quantized_properties:验证普通三维量化张量的形状、元素数量、数据类型、设备类型、量化方案、缩放比例和量化零点。 2. 边界条件验证 test_empty_affine_quantized_zero_numel:验证包含零长度维度的量化张量能够正常创建,并正确保留形状、数据类型和量化元数据。 3. 参数兼容性验证 test_empty_affine_quantized_parameters:验证不同形状、scale、zero_point 和量化数据类型组合,包括 torch.quint8 和 torch.qint8。 综上,该文件覆盖了 torch._empty_affine_quantized 的常规创建、零元素边界场景以及不同仿射量化参数组合,可作为独立运行的 API 级验证用例。 三、NPU 适配 torch._empty_affine_quantized 属于设备相关的量化张量创建接口,需要验证其在昇腾 NPU 上能否正确分配量化张量并保存量化属性。 本次测试通过: python device_type = ( acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu" ) 自动获取当前加速设备类型。在昇腾环境中,创建的量化张量位于 NPU 设备,并验证: - 张量设备类型与当前 NPU 设备一致; - torch.quint8 和 torch.qint8 类型可正常创建; - torch.per_tensor_affine 量化方案正确; - scale 和 zero_point 等量化元数据保持正确; - 包含零长度维度的量化张量可正常创建。 本次适配不修改 torch._empty_affine_quantized 接口实现,仅新增 NPU 单元测试进行功能看护。 【资料变更】不涉及。 本次仅适配社区测试用例,不新增或修改公开 API。 torch._empty_affine_quantized 属于 PyTorch 私有内部接口,不属于稳定的 Native API,因此不需要修改 docs/zh/native_apis 等接口资料。 【接口变更】 不涉及 【功能验证】 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤。 新增/变更内容是否已新增/适配 UT 测试用例看护,并补充测试自验证截图。 在目标版本的昇腾 NPU 环境中执行该测试文件 测试覆盖普通量化张量创建、零元素量化张量创建以及不同量化参数组合,测试均通过,日志如下: text test_empty_affine_quantized_parameters (test_quantized_tensor_creation.TestQuantizedTensorCreation.test_empty_affine_quantized_parameters) Verify creation with different affine quantization parameters. ... ok test_empty_affine_quantized_properties (test_quantized_tensor_creation.TestQuantizedTensorCreation.test_empty_affine_quantized_properties) Verify tensor properties and per-tensor affine quantization metadata. ... ok test_empty_affine_quantized_zero_numel (test_quantized_tensor_creation.TestQuantizedTensorCreation.test_empty_affine_quantized_zero_numel) Verify creation of quantized tensors containing a zero-sized dimension. ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.866s OK See merge request: Ascend/pytorch!41804 | 12 天前 | |
| 2 年前 | ||
[feat] Add disable_tensor_unsafe_check option to restart_device Co-authored-by: LiNuohang<linuohang@huawei.com> # message auto-generated for no-merge-commit merge: !35732 merge biaozang-m into master [feat] Add disable_tensor_unsafe_check option to restart_device Created-by: LiNuohang Commit-by: LiNuohang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 需求背景: 推理场景,不需要更新权重数据,因此发生uce故障时,存在只做流恢复,不需要做数据标脏和恢复的场景。当前快恢流恢复和数据标脏通过同一个配置项rebuild_all_resources控制,导致该场景无法使用,需要为数据标脏单独增加配置项。 当前现状: 当前快恢流恢复和数据标脏通过同一个配置项rebuild_all_resources控制 具体设计方案: 描述:restart_device接口增加disable_tensor_unsafe_check开关,用于单独控制是否对数据做标脏处理 为保证兼容性,默认为False,且仅在rebuild_all_resource为True时生效,即: rebuild_all_resources = True, disable_tensor_unsafe_check = True, 不做数据标脏 rebuild_all_resources = True, disable_tensor_unsafe_check= False, 做数据标脏 rebuild_all_resources = False, disable_tensor_unsafe_check= True, 不做数据标脏 rebuild_all_resources = False, disable_tensor_unsafe_check= False, 不做数据标脏 # 【资料变更】 restart_device接口增加disable_tensor_unsafe_check开关 # 【接口变更】 restart_device接口增加disable_tensor_unsafe_check开关 # 【功能验证】 已新增UT # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35732 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
round_size pad 32 byte Co-authored-by: zhaoyu<nanzhaogang@qq.com> # message auto-generated for no-merge-commit merge: !28316 merge ascend-master into master round_size pad 32 byte Created-by: zhaoyu65 Commit-by: zhaoyu Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > /kind bug **What does this PR do / why do we need it**: round_size增加32byte,避免aclnn算子内存问题 **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: Fixes #<issue number>, or Fixes (paste link of issue). --> Fixes # **Special notes for your reviewers**: See merge request: Ascend/pytorch!28316 | 8 个月前 | |
add record_stream sanitizer Co-authored-by: bellatan<tanmei2@huawei.com> Co-authored-by: hb_hubin<hubin79@huawei.com> # message auto-generated for no-merge-commit merge: !34841 merge record_stream_sanitizer into master add record_stream sanitizer Created-by: bellatan Commit-by: bellatan;hb_hubin Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 本地验证 1. test/npu/test_sanitizer.py  2. test/npu/test_sanitizer_record_stream.py  3. test/test_npu_sanitizer.py  4. test/test_sanitizer_pluggable_allocator.py  5. ci结果 ·UT_ARM_A2_Part_01:test/test_npu_sanitizer.py,pass  ·UT_ARM_A2_Part_02:test/npu/test_sanitizer.py,pass;test/test_sanitizer_pluggable_allocator.py pass  ·UT_ARM_A2_Part_03:test/npu/test_sanitizer_record_stream.py,pass  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34841 | 3 个月前 | |
add record_stream sanitizer Co-authored-by: bellatan<tanmei2@huawei.com> Co-authored-by: hb_hubin<hubin79@huawei.com> # message auto-generated for no-merge-commit merge: !34841 merge record_stream_sanitizer into master add record_stream sanitizer Created-by: bellatan Commit-by: bellatan;hb_hubin Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 本地验证 1. test/npu/test_sanitizer.py  2. test/npu/test_sanitizer_record_stream.py  3. test/test_npu_sanitizer.py  4. test/test_sanitizer_pluggable_allocator.py  5. ci结果 ·UT_ARM_A2_Part_01:test/test_npu_sanitizer.py,pass  ·UT_ARM_A2_Part_02:test/npu/test_sanitizer.py,pass;test/test_sanitizer_pluggable_allocator.py pass  ·UT_ARM_A2_Part_03:test/npu/test_sanitizer_record_stream.py,pass  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!34841 | 3 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
feat: adapt FRACTAL_NZ D2H/printing and serialization UT for Ascend950 Co-authored-by: wuyouqi1<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !44320 merge feat/nz2nd-serialization-master into master feat: adapt FRACTAL_NZ D2H/printing and serialization UT for Ascend950 Created-by: wuyouqi1 Commit-by: wuyouqi1 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/2629 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 同步 #2629(A5/Ascend950 上 FRACTAL_NZ 私有格式 tensor 的 D2H、打印、序列化适配)至本分支,与 v2.7.1 实现(MR !40289)保持一致。本 PR 内容: 1. torch_npu/utils/tensor_methods.py:新增 _add_repr_patch()。私有格式(FRACTAL_NZ 系列)tensor 在 Tensor.__repr__ 中会命中 _tensor_str 内部格式守卫(cat/stack),导致打印/D2H 失败;patch 在私有格式时先 .cpu() 触发 D2H + format cast,再走原 __repr__。在 _add_tensor_methods() 末尾注册。 2. torch_npu/csrc/aten/common/FormatCastKernelNpu.cpp:IsAclnnOnly() 路径下,未显式指定 customize_dtype 时,对 element_size() >= 4 的类型(fp32/int32)将 customizeAcltype 默认置为 ACL_FLOAT16(C0=16),与 aclop 路径的历史行为对齐。 3. test/npu/test_serialization_format.py:新增 Ascend950 专属用例 TestSerializationFormatAscend950(受 @unittest.skipUnless(IS_ASCEND950, ...) 门控),覆盖 ND save/load、按 dtype 的 FRACTAL_NZ round-trip、NZ tensor D2H/repr/print;原 TestSerializationFormat 在 Ascend950 上跳过。 > 说明:本分支不含 v2.7.1 MR !40289 中的 __reduce_ex__ 序列化 patch(该 patch 在本分支不需要)。如该 patch 后续需要,将另行评估。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 测试场景: - A2/A3(非 Ascend950):TestSerializationFormat 原用例照常执行,TestSerializationFormatAscend950 被 skipUnless(IS_ASCEND950) 跳过。 - A5/Ascend950:TestSerializationFormat 跳过,执行 TestSerializationFormatAscend950:fp16/bf16/int8/int32/int64 的 FRACTAL_NZ save/load round-trip 与 D2H/repr/print。 运行方式:python test/npu/test_serialization_format.py -v 新增/变更内容已适配 UT 用例(test_serialization_format.py)。本 PR 为跨版本同步,代码已验证在各目标分支干净 apply、无遗留依赖(不含 _reduce_ex__);具体执行结果以本分支 CI 流水线为准。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 Fixes #2629 https://gitcode.com/Ascend/pytorch/issues/2629 See merge request: Ascend/pytorch!44320 | 22 天前 | |
feat: adapt FRACTAL_NZ D2H/printing and serialization UT for Ascend950 Co-authored-by: wuyouqi1<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !44320 merge feat/nz2nd-serialization-master into master feat: adapt FRACTAL_NZ D2H/printing and serialization UT for Ascend950 Created-by: wuyouqi1 Commit-by: wuyouqi1 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/2629 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 同步 #2629(A5/Ascend950 上 FRACTAL_NZ 私有格式 tensor 的 D2H、打印、序列化适配)至本分支,与 v2.7.1 实现(MR !40289)保持一致。本 PR 内容: 1. torch_npu/utils/tensor_methods.py:新增 _add_repr_patch()。私有格式(FRACTAL_NZ 系列)tensor 在 Tensor.__repr__ 中会命中 _tensor_str 内部格式守卫(cat/stack),导致打印/D2H 失败;patch 在私有格式时先 .cpu() 触发 D2H + format cast,再走原 __repr__。在 _add_tensor_methods() 末尾注册。 2. torch_npu/csrc/aten/common/FormatCastKernelNpu.cpp:IsAclnnOnly() 路径下,未显式指定 customize_dtype 时,对 element_size() >= 4 的类型(fp32/int32)将 customizeAcltype 默认置为 ACL_FLOAT16(C0=16),与 aclop 路径的历史行为对齐。 3. test/npu/test_serialization_format.py:新增 Ascend950 专属用例 TestSerializationFormatAscend950(受 @unittest.skipUnless(IS_ASCEND950, ...) 门控),覆盖 ND save/load、按 dtype 的 FRACTAL_NZ round-trip、NZ tensor D2H/repr/print;原 TestSerializationFormat 在 Ascend950 上跳过。 > 说明:本分支不含 v2.7.1 MR !40289 中的 __reduce_ex__ 序列化 patch(该 patch 在本分支不需要)。如该 patch 后续需要,将另行评估。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 测试场景: - A2/A3(非 Ascend950):TestSerializationFormat 原用例照常执行,TestSerializationFormatAscend950 被 skipUnless(IS_ASCEND950) 跳过。 - A5/Ascend950:TestSerializationFormat 跳过,执行 TestSerializationFormatAscend950:fp16/bf16/int8/int32/int64 的 FRACTAL_NZ save/load round-trip 与 D2H/repr/print。 运行方式:python test/npu/test_serialization_format.py -v 新增/变更内容已适配 UT 用例(test_serialization_format.py)。本 PR 为跨版本同步,代码已验证在各目标分支干净 apply、无遗留依赖(不含 _reduce_ex__);具体执行结果以本分支 CI 流水线为准。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 Fixes #2629 https://gitcode.com/Ascend/pytorch/issues/2629 See merge request: Ascend/pytorch!44320 | 22 天前 | |
[Task-47][master] API Consistency: torch._C._set_warnAlways Co-authored-by: hongwei-2026<feizi_050920@qq.com> # message auto-generated for no-merge-commit merge: !41352 merge test-set_warnAlways-master into master [Task-47][master] API Consistency: torch._C._set_warnAlways Created-by: hongwei-2026 Commit-by: hongwei-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联Issue:https://gitcode.com/Ascend/pytorch/issues/2769 # 【修改方案】 本 PR 属于 Torch-NPU API 一致性对齐任务(任务 #47),面向 torch._C._set_warnAlways 完成 master 版本的 API 行为验证与测试用例补齐。 ## API 功能说明 torch._C._set_warnAlways 是 PyTorch 内部私有接口,用于设置是否始终输出警告信息。 **函数签名:** python torch._C._set_warnAlways(value: bool) -> None **参数:** - value (bool): 是否始终输出警告 ## 用例完整性说明 ### PyTorch 官方用例现状 torch._C._set_warnAlways 属于 PyTorch 内部私有接口,官方测试用例已有覆盖。该接口继承自 PyTorch 的 _C 模块,属于基础内部功能,所有版本行为一致。 ### NPU 适配方案 **适配场景**:场景二(PyTorch 官方有用例,无需 NPU 适配修改) torch._C._set_warnAlways 接口仅设置内部警告状态,不涉及任何 NPU 计算操作,在 NPU 环境下直接继承自 PyTorch 原生实现。 ## 具体修改内容 本 PR 仅新增 1 个测试文件: test/npu/test_set_warnAlways.py # 【资料变更】 不涉及。 torch._C._set_warnAlways 属于 **PyTorch 私有内部接口**,按照社区规范无需补充对外公开文档。 # 【接口变更】 不涉及。 本 PR 仅新增测试文件,不修改产品源码中的函数签名、参数列表、返回值或跨仓调用关系,不产生客户面可见接口变化。 # 【功能验证】 ## 验证环境 | 组件 | 版本 | |------|------| | torch | master | | torch_npu | 2.12.0.rc1 | | CANN | 9.0.0 | ## 测试场景覆盖 python import torch import torch_npu torch._C._set_warnAlways(True) torch._C._set_warnAlways(False) x = torch.randn(3, 4).npu() torch._C._set_warnAlways(True) torch._C._set_warnAlways(False) print("✓ torch._C._set_warnAlways works correctly in NPU environment") # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 --- ## 结论 torch._C._set_warnAlways API 在 master 版本 NPU 环境下**无需代码改动**,功能与 PyTorch 官方 CPU 行为完全一致。 ## 资料补齐说明 torch._C._set_warnAlways 属于**PyTorch私有内部接口**,按照社区规范无需补充对外公开文档。 ## Checklist - [x] API功能验证完成 - [x] CPU/NPU一致性验证 - [x] Issue关联:#2769 - [x] 资料核查完成(私有接口无需补充文档) --- ## 测试截图  See merge request: Ascend/pytorch!41352 | 1 个月前 | |
test: add test cases for torch.set_warn_always.The current test cases for torch.set_warn_always fail to cover all essential scenarios and must be completed. Co-authored-by: xin_heyun<919112805@qq.com> # message auto-generated for no-merge-commit merge: !43574 merge test_set_warn_always_master into master test: add test cases for torch.set_warn_always.The current test cases for torch.set_warn_always fail to cover all essential scenarios and must be completed. Created-by: xin_heyun Commit-by: xin_heyun Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> issue分析报告:https://gitcode.com/Ascend/pytorch/issues/3619 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) ### 1. 新增测试用例 新增 test/npu/test_set_warn_always.py,在 TestSetWarnAlways 中提供 4 个测试方法: | 测试方法 | 可核验行号 | 验证场景 | |---|---:|---| | test_state_switching_and_return_value | 39 | 依次开启、关闭全量告警,检查返回值为 None,并通过查询接口确认状态。 | | test_warn_always_emits_repeated_warnings | 48 | 开启全量告警后连续触发同一 TORCH_WARN_ONCE 来源,确认两次警告均被记录。 | | test_warn_once_behavior_when_disabled | 64 | 在独立子进程中关闭全量告警,连续触发同一警告来源并确认只记录一次。 | | test_invalid_inputs_preserve_state | 95 | 覆盖非布尔值、关键字参数、缺少参数和多余参数,确认抛出异常且原有开启状态不被破坏。 | setUp 保存原始全局状态并注册清理函数,保证每个测试结束后恢复环境。重复告警场景使用只读 NumPy 数组转换作为稳定的 TORCH_WARN_ONCE 来源;该触发源不依赖 NPU 计算,符合目标 API 本身设备无关的语义。 **测试内容:** 测试直接调用 torch.set_warn_always,覆盖布尔状态切换、None 返回值、查询接口一致性、开启时重复发出警告、关闭时单次告警,以及非法调用不改变既有状态。测试文件在 torch-npu 环境中验证公共 C10 告警控制路径未受 NPU 扩展影响。 **新增原因及必要性:** 现有社区测试只在 Autograd 用例中通过上下文辅助函数间接启用全量告警,缺少对目标 API 独立契约和异常路径的直接覆盖。新增测试补齐 NPU 环境下的公共告警状态管理与 TORCH_WARN_ONCE 行为验证,可防止状态切换、参数校验或警告次数发生回归。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 结论:不涉及。 torch.set_warn_always 是公开的非计算类 API,现有 NPU 原生 API 资料已记录其原生文档链接、支持状态和设备限制,且未错误声明数据类型支持;完整变更范围仅新增测试文件,不需要更新对外资料。 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 结论:不涉及。 完整变更范围仅新增 test/npu/test_set_warn_always.py,未修改目标 API 的实现、声明、注册、跨仓依赖或客户可见行为。 # 【功能验证】 ### master 执行命令: bash python test/npu/test_set_warn_always.py -v 结果: text test_invalid_inputs_preserve_state (__main__.TestSetWarnAlways.test_invalid_inputs_preserve_state) ... ok test_state_switching_and_return_value (__main__.TestSetWarnAlways.test_state_switching_and_return_value) ... ok test_warn_always_emits_repeated_warnings (__main__.TestSetWarnAlways.test_warn_always_emits_repeated_warnings) ... ok test_warn_once_behavior_when_disabled (__main__.TestSetWarnAlways.test_warn_once_behavior_when_disabled) ... ok ---------------------------------------------------------------------- Ran 4 tests in 7.480s OK ### v2.7.1 执行命令: bash python test/npu/test_set_warn_always.py -v 结果: text test_invalid_inputs_preserve_state (__main__.TestSetWarnAlways.test_invalid_inputs_preserve_state) ... ok test_state_switching_and_return_value (__main__.TestSetWarnAlways.test_state_switching_and_return_value) ... ok test_warn_always_emits_repeated_warnings (__main__.TestSetWarnAlways.test_warn_always_emits_repeated_warnings) ... ok test_warn_once_behavior_when_disabled (__main__.TestSetWarnAlways.test_warn_once_behavior_when_disabled) ... ok ---------------------------------------------------------------------- Ran 4 tests in 7.172s OK ### v2.11.0 执行命令: bash python test/npu/test_set_warn_always.py -v 结果: text test_invalid_inputs_preserve_state (__main__.TestSetWarnAlways.test_invalid_inputs_preserve_state) ... ok test_state_switching_and_return_value (__main__.TestSetWarnAlways.test_state_switching_and_return_value) ... ok test_warn_always_emits_repeated_warnings (__main__.TestSetWarnAlways.test_warn_always_emits_repeated_warnings) ... ok test_warn_once_behavior_when_disabled (__main__.TestSetWarnAlways.test_warn_once_behavior_when_disabled) ... ok ---------------------------------------------------------------------- Ran 4 tests in 7.220s OK ### v2.12.0 执行命令: bash python test/npu/test_set_warn_always.py -v 结果: text test_invalid_inputs_preserve_state (__main__.TestSetWarnAlways.test_invalid_inputs_preserve_state) ... ok test_state_switching_and_return_value (__main__.TestSetWarnAlways.test_state_switching_and_return_value) ... ok test_warn_always_emits_repeated_warnings (__main__.TestSetWarnAlways.test_warn_always_emits_repeated_warnings) ... ok test_warn_once_behavior_when_disabled (__main__.TestSetWarnAlways.test_warn_once_behavior_when_disabled) ... ok ---------------------------------------------------------------------- Ran 4 tests in 7.511s OK # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43574 | 27 天前 | |
| 2 年前 | ||
test: add UntypedStorage cpu coverage Co-authored-by: lgxxx<22515063@zju.edu.cn> # message auto-generated for no-merge-commit merge: !44233 merge test-task72-untyped-storage-cpu-master into master test: add UntypedStorage cpu coverage Created-by: lgxxx Commit-by: lgxxx Merged-by: ascend-robot Description: # 【合入来源】 https://gitcode.com/Ascend/pytorch/issues/3733 - [x] issue/工单 # 【修改方案】 torch.UntypedStorage.cpu 将非 CPU Storage 复制到 CPU;CPU Storage 调用该接口时返回原对象。 PyTorch 官方 Storage 测试没有直接完整覆盖 NPU Storage 的 .cpu() 契约。本 PR 在现有 test/npu/test_storage.py 中新增直接测试,覆盖: 1. 非空 NPU Storage 转换后的类型、CPU device、字节数和数据; 2. 转换结果与源 NPU Storage 不是同一对象; 3. 空 NPU Storage 转换后的类型、device 和零字节边界; 4. CPU Storage 调用 .cpu() 返回原对象。 不修改 API 实现。 # 【资料变更】 不新增资料 PR。master 的 docs/zh/api/native_api 中,PyTorch 2.7.1、2.11.0、2.12.0、2.13.0 资料表均已有 torch.UntypedStorage.cpu 条目;Atlas A2/A3 标记为支持,Ascend 950DT 标记为不支持。 # 【接口变更】 不涉及。未修改函数签名、返回类型或跨仓接口,仅新增 NPU 直接测试。 # 【功能验证】 以下为对应目标分支的单卡 NPU 实测环境、命令和结果: text TASK=72 API=torch.UntypedStorage.cpu TARGET_BRANCH=master PLATFORM=Linux aarch64 PYTHON=3.11.15 TORCH=2.12.0+cu130 TORCH_NPU=2.12.0.rc1 CANN=9.1.0.beta1 NPU=Ascend910_9382 VISIBLE_NPU=1 (PHYSICAL NPU 0) COMMAND=python test/npu/test_storage.py TestStorage.test_untyped_storage_cpu -v RESULT: test_untyped_storage_cpu ... ok Ran 1 test in 1.282s OK test_exit_code=0 master 测试源码复用 torch/torch-npu 2.12.0 运行环境,不表述为独立 master 运行时。 # 【CheckList】 - [x] 测试覆盖 API 核心行为和空 Storage 边界 - [x] 使用真实 NPU Storage 验证 NPU 到 CPU 转换 - [x] PR 标题使用 test 类型标签 See merge request: Ascend/pytorch!44233 | 18 天前 | |
perf: defer dynamo and inductor imports on master Co-authored-by: stevenaw0<huangguijun@huawei.com> # message auto-generated for no-merge-commit merge: !44294 merge master_import_sync into master perf: defer dynamo and inductor imports on master Created-by: stevenaw0 Commit-by: stevenaw0 Merged-by: ascend-robot Description: ## 同步 v2.9.0_import 的 import 优化到 master ### 核心改动 将 NPU 的 Dynamo/Inductor 初始化从 import torch_npu 时立即执行改为**懒加载**: - import torch_npu 时不导入 torch._dynamo、torch._inductor、torch_npu._inductor - 仅在用户实际调用 torch.compile() 或触发 graph capture 时才初始化 Dynamo 集成 - 通过 setuptools entry points 和 meta_path finder 实现按需触发 - 支持并发首次调用、fork 后恢复、失败重试 ### 适配说明(master PyTorch 2.13+) - 保留 master 的 stream/event variable patches - 保留 make_config_entry 兼容封装(MIN_SUPPORTED >= 2.10) - 保留 master 的 _patch_flex_attention_device 和 _dump_snapshot - 合并懒加载基础设施与 master 的 new_init(name=None) 签名 ### 详见 master_syn.md 中的逐文件分类和冲突解决记录 See merge request: Ascend/pytorch!44294 | 25 天前 | |
refactor: remove obsolete sanitizer autograd workaround Co-authored-by: No_neck<w.noneck.1024@gmail.com> # message auto-generated for no-merge-commit merge: !43468 merge refactor/remove-sanitizer-autograd-workaround into master refactor: remove obsolete sanitizer autograd workaround Created-by: No_neck Commit-by: No_neck Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [x] 重构优化 - [ ] 资料更新 关联 Issue:https://gitcode.com/Ascend/pytorch/issues/3596 关联 Issue:https://gitcode.com/Ascend/pytorch/issues/3669 # 【修改方案】 ## 调用链和现有作用 1. 当设置 TORCH_NPU_SANITIZER 后导入 torch_npu,或显式调用 enable_npu_sanitizer() 时,会进入 NPUSanitizer.enable()。 2. Stream Check 模式在 enable_stream_check() 中创建 NPURecordStreamHandler 和 NPUSanitizerDispatchMode,随后调用 dispatch.__enter__(),将该 Mode 压入当前线程的 TorchDispatchMode 栈。 3. Mode 启用期间,每个被 PyTorch Dispatcher 拦截的普通 ATen 算子都会自动进入 NPUSanitizerDispatchMode.__torch_dispatch__()。该类负责分析算子输入/输出的内存读写、执行真实算子并调用 EventHandler 检查跨 Stream 数据竞争。 4. 旧 enable_autograd(aten_api) 在真实算子执行前调用,原意是在五个白名单名称匹配时从 TLS excluded 集合中移除 AutogradFunctionality,使 Autograd Dispatch Key 重新参与 redispatch。 ## 删减原因 PyTorch 2.13 进入 DispatchMode 的实际名称是 _adaptive_avg_pool2d、native_batch_norm、_log_softmax、nll_loss_forward、_to_copy 等内部 ATen 名称,与旧白名单中的公开 API 名称不相等。 五个真实用例均覆盖到旧 enable_autograd() 调用点,但白名单命中次数和 TLS 状态修改次数均为 0。因此 setter 真分支在当前真实路径中不可达。 ## 代码修改 1. 删除 self.npu_adjust_autograd 白名单。 2. 删除 enable_autograd() 方法。 3. 删除 aten_api 临时变量和 self.enable_autograd(aten_api) 调用。 4. 删除只验证上述旧函数和字段的过期单元测试。 5. 保留 TorchDispatchMode 注册、输入/输出分析、真实算子执行、Stream 获取、数据竞争检查和 record_stream 检查流程。 # 【资料变更】 不涉及。 # 【接口变更】 不涉及跨代码仓或客户可见接口变更。本次仅删除 NPU Sanitizer 内部不可达的兼容逻辑。 # 【功能验证】 当前 master 自检: - git diff --check 执行通过。 - python -m py_compile torch_npu/npu/_stream_check.py test/npu/test_stream_check.py 执行通过。 - GitCode 远端 Git Hooks 检查通过。 NPU 实机消融验证环境: - PyTorch:2.13.0a0+gitfad7424 - torch_npu:2.13.0+git19cd51d - 设备:Ascend 910B2 - 同一 torch_npu master 提交分别构建保留版和删除版 wheel。 验证结果:  - adaptive_avg_pool2d、batch_norm、log_softmax、nll_loss、to 前向和反向均通过。 - 删除前后输出、梯度、shape、dtype、device 逐元素一致。 - BatchNorm running_mean 和 running_var 一致。 - 删除前后有序 Sanitizer Dispatch 序列和各 operator 调用次数一致。 - Sanitizer 启用前、启用后和用例结束后的 TLS 状态一致。 - 五个真实用例白名单命中和 TLS 状态修改次数均为 0。 - torch_npu 官方 Sanitizer 测试:保留版 38/38 通过,删除版 37/37 通过。 - 数量差异来自删除一个只验证旧 enable_autograd() 的过期测试。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43468 | 1 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
test: add TensorMeta API validation Co-authored-by: zhaoziyi<zhaoziyi@isrc.iscas.ac.cn> # message auto-generated for no-merge-commit merge: !41439 merge intern/tensor-meta-master into master test: add TensorMeta API validation Created-by: zhaoziyi-2026 Commit-by: zhaoziyi Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联 issue: - 任务 issue:https://gitcode.com/Ascend/pytorch/issues/2773 # 【修改方案】 本 PR 在已有 Tensor 测试文件 test/npu/test_tensor.py 中补充 torch._C._TensorMeta 的 API 一致性验证用例。 torch._C._TensorMeta 是 PyTorch torch._C 内部元类,负责管理 torch.Tensor、torch.nn.Parameter 以及 torch.Tensor 子类等 Tensor 类对象的元类行为。经检查,PyTorch 上游仅在 JIT 报错路径中出现 _TensorMeta 字符串,不是目标 API 的直接专项测试;torch-npu 当前 test 目录中也未发现该 API 的专项测试。因此本 PR 按指导规范在已有 Tensor 测试文件中补充自写测试。 任务 API 功能、上游社区用例情况与本 PR 处理方式如下: | API | 功能说明 | 上游社区用例 / 覆盖情况 | 本 PR 处理 | | --- | --- | --- | --- | | torch._C._TensorMeta | PyTorch C 扩展内部元类,type(torch.Tensor) 对应 _TensorMeta。 | PyTorch 上游 test/test_jit.py 中存在错误信息包含 _TensorMeta 的间接覆盖,但不是目标 API 的直接专项测试。 | 在 test/npu/test_tensor.py 中补充专项测试,验证 Tensor 类元信息、NPU Tensor 实例关系、自定义 Tensor 子类和非法直接构造路径。 | 主要开发思路: 1. 先确认 torch._C._TensorMeta 在当前 torch-npu 环境中存在。 2. 复查 PyTorch 官方测试和 torch-npu 当前测试,未发现目标 _TensorMeta 的直接专项测试。 3. 该 API 属于 Tensor 类元信息相关能力,当前仓库已有 test/npu/test_tensor.py 覆盖 Tensor 基础行为,因此本 PR 将新增用例放入该文件。 4. 测试覆盖 _TensorMeta 与 torch.Tensor、torch.nn.Parameter、NPU Tensor 实例、自定义 Tensor 子类之间的关系,并验证 _TensorBase base 直接构造的异常路径。 5. 本 PR 仅补充测试,不修改 API 实现,不改变现有接口行为。 修改测试文件: 同步清理该文件中未使用的 import itertools。 ext test/npu/test_tensor.py 新增测试方法: text test_tensor_meta_matches_tensor_classes test_tensor_meta_with_npu_tensor_instance test_tensor_meta_subclass_and_direct_construction ` 各测试核心验证点如下: | 测试方法 | 核心验证点 | | --- | --- | | test_tensor_meta_matches_tensor_classes | 验证 _TensorMeta 是 torch.Tensor 的元类,并验证 torch.Tensor、torch.nn.Parameter 的类对象关系。 | | test_tensor_meta_with_npu_tensor_instance | 验证 NPU Tensor 实例仍是 torch.Tensor 实例,但不是 _TensorMeta 实例,同时其类对象由 _TensorMeta 管理。 | | test_tensor_meta_subclass_and_direct_construction | 验证自定义 torch.Tensor 子类使用 _TensorMeta,并验证以 torch._C._TensorBase 作为 base 直接调用 _TensorMeta(...) 会抛出预期异常。 | # 【资料变更】 不涉及资料 PR。 已检查 PyTorch 官方公开文档与 Ascend native API 文档,未发现 torch._C._TensorMeta 独立条目。该 API 属于 torch._C 私有接口,按指导文档不需要补充资料,因此不新增 docs.md,不提交资料 PR。 # 【接口变更】 不涉及。 本 PR 不修改 API 实现,不改变现有接口行为,不新增 torch-npu 对外接口。 # 【功能验证】 运行环境: text 操作系统:Ubuntu 22.04 昇腾硬件信息:910B CANN软件版本:9.0.0 安装的软件版本:torch 2.12.0,torch-npu 2.12.0rc1 执行命令: bash cd /root python /root/pytorch/test/npu/test_tensor.py -k tensor_meta -v 执行结果: `text W0713 10:23:32.264000 8957 torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) test_tensor_meta_matches_tensor_classes (__main__.TestTensor) ... ok test_tensor_meta_subclass_and_direct_construction (__main__.TestTensor) ... ok test_tensor_meta_with_npu_tensor_instance (__main__.TestTensor) ... [W713 10:23:34.813419630 NPUCachingAllocator.cpp:199] Warning: The current CANN and Soc versions require processing for 32 padding size, with memory allocation. (function operator()) ok ---------------------------------------------------------------------- Ran 3 tests in 0.823s OK ` 说明:上述 warning 来自 PyTorch 导入阶段 optional dependency 提示或 NPU 内存分配提示,不影响本用例执行结果。 最终验证结论: 1. 本 PR 补充 3 个 API 一致性测试,覆盖 torch._C._TensorMeta 的 Tensor 类元信息、NPU Tensor 实例关系、自定义 Tensor 子类和异常路径。 2. 补充测试不仅验证 API 可导入和可访问,也验证 _TensorMeta 与 torch.Tensor、torch.nn.Parameter`、NPU Tensor 实例之间的类型关系。 3. 补充测试涉及 Tensor 的部分已在当前 accelerator 上执行。 4. 补充测试已在 master 环境验证通过。 5. 目标 API 当前行为符合预期,未发现需要 API 功能补齐的问题。 6. 本 PR 不修改 API 实现,不涉及接口变更。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41439 | 1 个月前 | |
test: add NPU coverage for Tensor.cfloat Co-authored-by: JfanLiu<1300083451@qq.com> # message auto-generated for no-merge-commit merge: !43359 merge tensor-cfloat-master into master test: add NPU coverage for Tensor.cfloat Created-by: JfanLiu Commit-by: JfanLiu Merged-by: ascend-robot Description: ## 关联 issue https://gitcode.com/Ascend/pytorch/issues/2742 ## API 功能 Tensor.cfloat() 返回当前张量转换为 torch.complex64 的结果(与 to(torch.complex64) 等价),设备保持不变。支持 bool、整型、浮点、复数等标量 dtype 源张量;对空张量同样支持。该 API 无必填入参,用于快速获取张量的 complex64 表示。 ## 官方用例情况 检索官方 test/ 目录后确认:官方 test/test_torch.py/test/test_ops.py 等存在 cfloat 相关 dtype 转换用例,但无 NPU 专项覆盖。本 PR 采用新增 test/npu/test_tensor_cfloat.py 用例文件的方式补充 NPU 侧验证,不修改 test_upstream 相关 patch。 ## 测试场景覆盖 - 12 种标量 dtype(bool/uint8/int8/int16/int32/int64/float16/bfloat16/float32/float64/complex64/complex128)源张量在 NPU 上调用 cfloat():输出 dtype 均为 torch.complex64,设备保持 NPU,且与 CPU 参考结果逐项一致(含 real/imag 分量) - 空张量场景(int64/float32/complex64):cfloat() 输出 dtype 与设备正确,与 CPU 参考结果一致 - 文件末尾含 if __name__ == "__main__": run_tests() 主入口,便于直接运行 ## 资料补齐情况 Tensor.cfloat 为 PyTorch 原生 API,已有对应 Native API 资料文档,且无单独 Restrictions/Notes 限制条目(无限制即与原生行为一致)。本 PR 仅补充测试,无新增资料需求,不涉及 native API 文档修改。 ## 运行命令与日志 - 分支:master - 环境:Ascend 910(npu-smi 25.5.1)+ CANN 9.1.0-beta.1 + Python 3.12.13;本地验证使用 torch 2.12.0+cu130 / torch_npu 2.12.0(master_py312 环境近似验证,跨版本以 CI 为准) - 命令: bash cd /workspace unset PYTHONPATH /workspace/venvs/master_py312/bin/python /workspace/user_data/tasks/_align-20260814/tensor-cfloat-master/test/npu/test_tensor_cfloat.py -v - 结果:Ran 1 test ... OK(退出码 0,subTest 覆盖 12 种 dtype + 3 种空张量) ## 变更说明 - 新增 test/npu/test_tensor_cfloat.py,仅补充测试,不修改任何实现代码,不修改 test_upstream 相关 patch - Source: JfanLiu:tensor-cfloat-master,Target: master - Previous PR: none See merge request: Ascend/pytorch!43359 | 5 天前 | |
[Task-99][master] API Consistency: Tensor.ndim Co-authored-by: hongwei-2026<feizi_050920@qq.com> # message auto-generated for no-merge-commit merge: !41345 merge test-ndim-master into master [Task-99][master] API Consistency: Tensor.ndim Created-by: hongwei-2026 Commit-by: hongwei-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联Issue:https://gitcode.com/Ascend/pytorch/issues/2724 资料核查结论参见:https://gitcode.com/Ascend/pytorch/issues/2834 # 【修改方案】 本 PR 属于 Torch-NPU API 一致性对齐任务,面向 Tensor.ndim 完成 master 版本的 API 行为验证与测试用例补齐。 ## API 功能说明 Tensor.ndim 是只读属性,返回张量的维度数量,与 Tensor.dim() 和 Tensor.ndimension() 等价。 ## 用例完整性说明 ### PyTorch 官方用例现状 经检索 PyTorch 官方仓库(v2.7.1–v2.12.0),对 torch/、test/ 目录执行了以下检索: - grep -rn "\.ndim" test/ --include="*.py" — 未命中对该接口的独立直接测试 - grep -rn "ndim" torch/ --include="*.py" — 仅在 Tensor 类中存在属性/方法定义 **检索结论**:Tensor.ndim 在 PyTorch 核心测试中被 dim() 等关联 API 间接覆盖,但未发现针对该接口的独立聚焦测试用例,所有目标版本行为一致。 ### 新增用例原因 由于上游无独立聚焦用例,无法对 Tensor.ndim 的跨版本行为进行定向回归看护。按照任务文档场景三规范,自主编写完整测试用例,提交至 test/npu/ 目录。 ### NPU 适配方案 Tensor.ndim 仅读取张量元数据的维度信息,不涉及任何设备端计算或算子调度。在 NPU 环境下直接继承自 PyTorch 原生实现,无需代码适配。 ## 具体修改内容 本 PR 仅新增 1 个测试文件: test/npu/test_tensor_ndim.py **测试命令:** bash python test/npu/test_tensor_ndim.py **测试用例覆盖:** 1. test_ndim_0d_tensor — 0D 标量张量维度验证 2. test_ndim_1d_tensor — 1D 张量维度验证 3. test_ndim_2d_tensor — 2D 张量维度验证 4. test_ndim_3d_tensor — 3D 张量维度验证 5. test_ndim_4d_tensor — 4D 张量维度验证 6. test_ndim_cpu_npu_consistency — CPU/NPU 多形状维度一致性校验 7. test_ndim_after_operations — 张量运算后维度校验(加法、sum) 所有测试方法均使用 @SupportedDevices(['Ascend910A', 'Ascend910B', 'Ascend910_93', 'Ascend950']) 装饰器进行 NPU 可用性检查,未检测到 NPU 设备时自动跳过。使用 self.assert* 系列方法完成结果比对,张量通过 .npu() 迁移至 NPU 设备。 # 【资料变更】 不涉及。 经核查,Tensor.ndim 在 v2.7.1–v2.12.0、master 全版本 docs/zh/native_apis/pytorch_2-X-Y/torch-Tensor.md 表格中均已收录,无需补充文档。 # 【接口变更】 不涉及。 本 PR 仅新增测试文件,不修改产品源码中的函数签名、参数列表、返回值或跨仓调用关系,不产生客户面可见接口变化。 # 【功能验证】 ## 验证环境 | 组件 | 版本 | |------|------| | torch | master | | torch_npu | 2.12.0.rc1 | | CANN | 9.0.0 | ## 测试覆盖场景 python # 0D张量 x = torch.tensor(5).npu() assert x.ndim == 0 # 1D张量 x = torch.randn(5).npu() assert x.ndim == 1 # 2D张量 x = torch.randn(3, 4).npu() assert x.ndim == 2 # 3D张量 x = torch.randn(2, 3, 4).npu() assert x.ndim == 3 # 4D张量 x = torch.randn(2, 3, 4, 5).npu() assert x.ndim == 4 ## CPU/NPU 一致性验证 python cpu_tensor = torch.randn(3, 4, 5) npu_tensor = cpu_tensor.npu() assert cpu_tensor.ndim == npu_tensor.ndim # \u2705 一致 ## UT 验证 bash python test/npu/test_tensor_ndim.py -v 结果: test_ndim_0d_tensor (test.npu.test_tensor_ndim.TestTensorNdim) ... ok test_ndim_1d_tensor (test.npu.test_tensor_ndim.TestTensorNdim) ... ok test_ndim_2d_tensor (test.npu.test_tensor_ndim.TestTensorNdim) ... ok test_ndim_3d_tensor (test.npu.test_tensor_ndim.TestTensorNdim) ... ok test_ndim_4d_tensor (test.npu.test_tensor_ndim.TestTensorNdim) ... ok test_ndim_cpu_npu_consistency (test.npu.test_tensor_ndim.TestTensorNdim) ... ok test_ndim_after_operations (test.npu.test_tensor_ndim.TestTensorNdim) ... ok ---------------------------------------------------------------------- Ran 7 tests in 1.210s OK # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 --- ## 结论 Tensor.ndim API 在 master 版本 NPU 环境下**无需代码改动**,功能与 PyTorch 官方 CPU 行为完全一致。 --- ## 测试截图  See merge request: Ascend/pytorch!41345 | 1 个月前 | |
[Task-100][master] API Consistency: Tensor.ndimension Co-authored-by: hongwei-2026<feizi_050920@qq.com> # message auto-generated for no-merge-commit merge: !41324 merge test-ndimension-master into master [Task-100][master] API Consistency: Tensor.ndimension Created-by: hongwei-2026 Commit-by: hongwei-2026 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联Issue:https://gitcode.com/Ascend/pytorch/issues/2726 资料核查结论参见:https://gitcode.com/Ascend/pytorch/issues/2834 # 【修改方案】 本 PR 属于 Torch-NPU API 一致性对齐任务,面向 Tensor.ndimension 完成 master 版本的 API 行为验证与测试用例补齐。 ## API 功能说明 Tensor.ndimension() -> int 返回张量的维度数量,是 Tensor.dim() 的别名,与 Tensor.ndim 属性等价。 ## 用例完整性说明 ### PyTorch 官方用例现状 经检索 PyTorch 官方仓库(v2.7.1–v2.12.0),对 torch/、test/ 目录执行了以下检索: - grep -rn "\.ndimension()" test/ --include="*.py" — 未命中对该接口的独立直接测试 - grep -rn "ndimension()" torch/ --include="*.py" — 仅在 Tensor 类中存在属性/方法定义 **检索结论**:Tensor.ndimension 在 PyTorch 核心测试中被 dim() 等关联 API 间接覆盖,但未发现针对该接口的独立聚焦测试用例,所有目标版本行为一致。 ### 新增用例原因 由于上游无独立聚焦用例,无法对 Tensor.ndimension 的跨版本行为进行定向回归看护。按照任务文档场景三规范,自主编写完整测试用例,提交至 test/npu/ 目录。 ### NPU 适配方案 Tensor.ndimension 仅读取张量元数据的维度信息,不涉及任何设备端计算或算子调度。在 NPU 环境下直接继承自 PyTorch 原生实现,无需代码适配。 ## 具体修改内容 本 PR 仅新增 1 个测试文件: test/npu/test_tensor_ndimension.py **测试命令:** bash python test/npu/test_tensor_ndimension.py **测试用例覆盖:** 1. test_ndimension_0d_tensor — 0D 标量张量维度验证 2. test_ndimension_1d_tensor — 1D 张量维度验证 3. test_ndimension_2d_tensor — 2D 张量维度验证 4. test_ndimension_3d_tensor — 3D 张量维度验证 5. test_ndimension_4d_tensor — 4D 张量维度验证 6. test_ndimension_cpu_npu_consistency — CPU/NPU 多形状维度一致性校验 7. test_ndimension_after_operations — 张量运算后维度校验(加法、sum) 8. test_ndimension_equals_ndim — ndimension() 与 ndim 属性等价性校验 所有测试方法均使用 @SupportedDevices(['Ascend910A', 'Ascend910B', 'Ascend910_93', 'Ascend950']) 装饰器进行 NPU 可用性检查,未检测到 NPU 设备时自动跳过。使用 self.assert* 系列方法完成结果比对,张量通过 .npu() 迁移至 NPU 设备。 # 【资料变更】 不涉及。 经核查,Tensor.ndimension 在 v2.7.1–v2.12.0、master 全版本 docs/zh/native_apis/pytorch_2-X-Y/torch-Tensor.md 表格中均已收录,无需补充文档。 # 【接口变更】 不涉及。 本 PR 仅新增测试文件,不修改产品源码中的函数签名、参数列表、返回值或跨仓调用关系,不产生客户面可见接口变化。 # 【功能验证】 ## 验证环境 | 组件 | 版本 | |------|------| | torch | master | | torch_npu | 2.12.0.rc1 | | CANN | 9.0.0 | ## 测试覆盖场景 python # 0D张量 x = torch.tensor(5).npu() assert x.ndimension() == 0 # 1D张量 x = torch.randn(5).npu() assert x.ndimension() == 1 # 2D张量 x = torch.randn(3, 4).npu() assert x.ndimension() == 2 # 3D张量 x = torch.randn(2, 3, 4).npu() assert x.ndimension() == 3 # 4D张量 x = torch.randn(2, 3, 4, 5).npu() assert x.ndimension() == 4 ## CPU/NPU 一致性验证 python cpu_tensor = torch.randn(3, 4, 5) npu_tensor = cpu_tensor.npu() assert cpu_tensor.ndimension() == npu_tensor.ndimension() # \u2705 一致 ## UT 验证 bash python test/npu/test_tensor_ndimension.py -v 结果: test_ndimension_0d_tensor (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok test_ndimension_1d_tensor (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok test_ndimension_2d_tensor (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok test_ndimension_3d_tensor (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok test_ndimension_4d_tensor (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok test_ndimension_cpu_npu_consistency ... test_ndimension_after_operations (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok test_ndimension_equals_ndim (test.npu.test_tensor_ndimension.TestTensorNdimension) ... ok ---------------------------------------------------------------------- Ran 8 tests in 1.134s OK # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 --- ## 结论 Tensor.ndimension API 在 master 版本 NPU 环境下**无需代码改动**,功能与 PyTorch 官方 CPU 行为完全一致。 --- ## 测试截图  See merge request: Ascend/pytorch!41324 | 1 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 3 个月前 | |
test(npu): add TensorLikePair NPU validation Co-authored-by: whirlpool_dark<kk2425597323@126.com> # message auto-generated for no-merge-commit merge: !43504 merge test-tensor-like-pair-npu-master into master test(npu): add TensorLikePair NPU validation Created-by: whirlpool_dark Commit-by: whirlpool_dark Merged-by: ascend-robot Description: # 【合入来源】 [【API一致性任务】 API一致性:torch.testing._comparison.TensorLikePair NPU 适配](https://gitcode.com/Ascend/pytorch/issues/3602) # 【修改方案】 ## API 功能 torch.testing._comparison.TensorLikePair.compare() 校验张量值、shape、layout、stride、device 和 dtype;失败时抛出 ErrorMeta。 ## 测试用例完备性 TestTesting.test_tensor_like_pair 直接调用 TensorLikePair(actual, expected).compare()。用例覆盖默认 NPU 比较、check_device=False、check_dtype=False、check_layout=False、check_stride=True、非默认 rtol/atol、equal_nan=True,以及 dtype/layout/stride/shape/数值失配的 ErrorMeta 路径。 ## API 适配方案 / 用例适配方案 PyTorch 社区测试缺少直接 NPU 张量比较覆盖,因此 master 在 test/npu/test_testing.py 增加 torch-npu 自有用例。分支已同步到当前 master,仅改动该测试文件;API 实现不变。 ## 修改理由及必要性 仅验证默认值比较无法证明各比较选项和属性检查在 NPU 上保持一致。用例以最小输入覆盖成功和失败分支;若省略,相关选项或元数据失配会缺少直接回归保护。 # 【资料变更】 torch.testing._comparison.TensorLikePair 属于 PyTorch 内部/私有接口,不属于面向用户的 native API 支持清单范围,因此无需更新支持文档。 # 【接口变更】 不涉及,仅更新测试。 # 【功能验证】 ### master 命令: bash source /usr/local/Ascend/cann-9.0.0/set_env.sh export PATH=/usr/local/python3.12.13/bin:$PATH python3.12 ./test_testing_master_fixed.py TestTesting.test_tensor_like_pair 环境:torch 2.12.0+cu130,torch_npu 2.12.0,npu_available=True,设备 Ascend910B4。 输出: ``text W0805 12:32:58.690000 site-packages/torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl [W805 12:33:01.304917380 NPUCachingAllocator.cpp:201] Warning: The current CANN and Soc versions require processing for 32 padding size, with memory allocation. (function operator()) . ---------------------------------------------------------------------- Ran 1 test in 0.947s OK `` 结论:torch-npu 自有目标用例通过;CuTeDSL 可选依赖和 CANN 对齐告警不影响断言。 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR 标题正确使用类型标签,如:feat、fix、refactor、docs、test 等 - [ ] PR 持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43504 | 24 天前 | |
test: add math SDP fp16 bf16 reduction API validation Co-authored-by: zhaoziyi<zhaoziyi@isrc.iscas.ac.cn> # message auto-generated for no-merge-commit merge: !41433 merge intern/math-sdp-fp16-bf16-reduction-master into master test: add math SDP fp16 bf16 reduction API validation Created-by: zhaoziyi-2026 Commit-by: zhaoziyi Merged-by: ascend-robot Description: # 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联 issue: - 任务 issue:https://gitcode.com/Ascend/pytorch/issues/2767 # 【修改方案】 本 PR 在已有 backend 测试文件 test/npu/test_torch_backends.py 中补充 torch._C._set_math_sdp_allow_fp16_bf16_reduction 的 API 一致性验证用例。 torch._C._set_math_sdp_allow_fp16_bf16_reduction 是 PyTorch torch._C 内部状态 setter,用于设置 math SDP 是否允许 fp16 / bf16 reduction。经检查,PyTorch 官方未提供该 API 的直接专项测试,torch-npu 当前 test 目录中也未发现该 API 的专项测试。因此本 PR 按指导规范在 torch-npu test 目录补充自写测试。 任务 API 功能、上游社区用例情况与本 PR 处理方式如下: | API | 功能说明 | 上游社区用例 / 覆盖情况 | 本 PR 处理 | | --- | --- | --- | --- | | torch._C._set_math_sdp_allow_fp16_bf16_reduction | PyTorch torch._C 内部状态 setter,用于设置 math SDP 是否允许 fp16 / bf16 reduction。 | 未检索到 PyTorch 官方直接专项测试;2.7.1 现有 test_upstream/test/test_transformers.py.patch 中涉及上层 wrapper torch.backends.cuda.allow_fp16_bf16_reduction_math_sdp,但不是目标 _C setter 的直接专项测试。 | 在已有 backend 测试文件 test/npu/test_torch_backends.py 中补充用例,验证底层 setter / getter 状态切换、上层 backend wrapper 联动和异常输入路径。 | 主要开发思路: 1. 先确认 torch._C._set_math_sdp_allow_fp16_bf16_reduction 和配套 getter torch._C._get_math_sdp_allow_fp16_bf16_reduction 在当前 torch-npu 环境中均存在。 2. 复查 PyTorch 官方测试和 torch-npu 当前测试,未发现目标 _C setter 的直接专项测试。 3. 复查 2.7.1 现有 test_upstream/test/test_transformers.py.patch,其中覆盖的是上层 wrapper 调用和 SDPA 输出行为,不是本任务目标 API 的直接验证。 4. 该 API 不涉及 Tensor 输入,不存在需要迁移 Tensor 到 NPU 的适配点,因此不需要 test_upstream patch。 5. 该 API 属于 math SDP 全局状态控制接口,当前仓库已有 test/npu/test_torch_backends.py 覆盖 flash_sdp、mem_efficient_sdp、math_sdp 等 backend 开关,因此本 PR 将新增用例放入该文件。 6. 本 PR 仅补充测试,不修改 API 实现,不改变现有接口行为。 修改测试文件: text test/npu/test_torch_backends.py 新增测试方法: text test_math_sdp_allow_fp16_bf16_reduction_setter test_math_sdp_allow_fp16_bf16_reduction_backend_wrapper test_math_sdp_allow_fp16_bf16_reduction_invalid_value 各测试核心验证点如下: | 测试方法 | 核心验证点 | | --- | --- | | test_math_sdp_allow_fp16_bf16_reduction_setter | 验证 torch._C._set_math_sdp_allow_fp16_bf16_reduction(True / False) 可正确更新 torch._C._get_math_sdp_allow_fp16_bf16_reduction() 返回值。 | | test_math_sdp_allow_fp16_bf16_reduction_backend_wrapper | 验证上层 wrapper torch.backends.cuda.allow_fp16_bf16_reduction_math_sdp(True / False) 控制的是同一个底层状态,不依赖 wrapper 返回值。 | | test_math_sdp_allow_fp16_bf16_reduction_invalid_value | 验证传入非 bool 值时会抛出异常,且当前 math SDP flag 不被错误输入改变。 | # 【资料变更】 不涉及资料 PR。 已检查 PyTorch 官方公开文档与 Ascend native API 文档,未发现 torch._C._set_math_sdp_allow_fp16_bf16_reduction 独立条目。该 API 属于 torch._C 私有接口,按指导文档不需要补充资料,因此不新增 docs.md,不提交资料 PR。 # 【接口变更】 不涉及。 本 PR 不修改 API 实现,不改变现有接口行为,不新增 torch-npu 对外接口。 # 【功能验证】 运行环境: text 操作系统:Ubuntu 22.04 昇腾硬件信息:910B CANN软件版本:9.0.0 安装的软件版本:torch 2.12.0,torch-npu 2.12.0rc1 执行命令: bash cd /root python /root/pytorch/test/npu/test_torch_backends.py -k math_sdp_allow_fp16_bf16_reduction -v 执行结果: ``text W0713 10:17:14.807000 8304 torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) test_math_sdp_allow_fp16_bf16_reduction_backend_wrapper (__main__.TorchBackendsApiTestCase) ... ok test_math_sdp_allow_fp16_bf16_reduction_invalid_value (__main__.TorchBackendsApiTestCase) ... ok test_math_sdp_allow_fp16_bf16_reduction_setter (__main__.TorchBackendsApiTestCase) ... ok ---------------------------------------------------------------------- Ran 3 tests in 0.805s OK ` 说明:该 warning 来自 PyTorch 导入阶段 optional dependency 提示,不影响本用例执行结果。 最终验证结论: 1. 本 PR 补充 3 个 API 一致性测试,覆盖 torch._C._set_math_sdp_allow_fp16_bf16_reduction` 的正常状态切换、backend wrapper 联动和异常输入路径。 2. 补充测试不仅验证 API 可调用,也验证 setter / getter 状态一致性、wrapper 对同一底层 flag 的控制能力,以及错误输入不会污染全局状态。 3. 该 API 不涉及 Tensor 输入,不需要 NPU Tensor 迁移适配。 4. 补充测试已在 master 环境验证通过。 5. 目标 API 当前行为符合预期,未发现需要 API 功能补齐的问题。 6. 本 PR 不修改 API 实现,不涉及接口变更。 # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!41433 | 1 个月前 | |
| 2 年前 | ||
| 1 年前 | ||
use torch_npu._C instead of option Co-authored-by: huangyunlong2022<huangyunlong4@h-partners.com> # message auto-generated for no-merge-commit merge: !43232 merge 2.13fille into master use torch_npu._C instead of option Created-by: huangyunlong2022 Commit-by: huangyunlong2022 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 使用torch_npu.\_C接口替换option接口 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43232 | 1 个月前 | |
feat: add NPU_DEVICE_LIMIT env var support for device limit config Co-authored-by: xiu_21<caixiuxiu1@huawei.com> # message auto-generated for no-merge-commit merge: !44968 merge devive_limit_master into master feat: add NPU_DEVICE_LIMIT env var support for device limit config Created-by: xiu_21 Commit-by: xiu_21 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 支持通过 NPU_DEVICE_LIMIT 环境变量在设备初始化时自动设置 cube/vector core 资源限制。 格式:NPU_DEVICE_LIMIT=cube_num,vector_num(如 export NPU_DEVICE_LIMIT=8,16) - 值必须为非负整数(cube_num >= 0, vector_num >= 0) - 格式错误或负数时输出警告,不崩溃 - 环境变量仅解析一次,结果缓存后应用于所有设备(每个设备初始化时都会设置) | 文件 | 变更 | |---|---| | torch_npu/csrc/core/npu/NPUFunctions.h | 声明 SetDeviceResLimitFromEnv;新增 DevResLimitType 枚举 | | torch_npu/csrc/core/npu/NPUFunctions.cpp | 实现 parseIntPair + SetDeviceResLimitFromEnv;在 SetDevice 和 LazySetDevice 中调用 | | test/npu/test_torch_npu.py | 新增 4 个环境变量测试用例 | # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 不涉及 # 【功能验证】 1、测试已有用例: pytest test/npu/test_torch_npu.py -k test_set_device_res_limit pytest test/npu/test_torch_npu.py -k test_set_stream_res_limit 2、测试新增用例:pytest test/npu/test_torch_npu.py -k test_set_device_res_limit_from_env | 用例 | 覆盖场景 | 说明 | |---|---|---| | test_set_device_res_limit_from_env | SetDevice 路径 | NPU_DEVICE_LIMIT=8,16,显式 set_device,验证 limit 生效 | | test_set_device_res_limit_from_env_via_lazy_set_device | LazySetDevice 路径 | 通过 Stream 触发,验证 limit 同样生效 | | test_set_device_res_limit_from_env_multi_device | 多设备场景 | device 0 通过 set_device 初始化,device 1 通过 Stream 触发 LazySetDevice,验证两个设备均生效 | | test_set_device_res_limit_from_env_invalid | 非法输入 | invalid、-2,16、8,-2、-2,-2、-1,-1、8,16abc、8,abc16、8,16x、8, 16trailing,验证不崩溃 |  3、采取profiling获取实际使用的核数 默认情况下:   export NPU_DEVICE_LIMIT=8,16:   # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!44968 | 13 天前 | |
test: add NPU coverage for torch._C._get_tracing_state Co-authored-by: JfanLiu<1300083451@qq.com> # message auto-generated for no-merge-commit merge: !42589 merge test-tracing-state-master into master test: add NPU coverage for torch._C._get_tracing_state Created-by: JfanLiu Commit-by: JfanLiu Merged-by: ascend-robot Description: ## 关联 issue https://gitcode.com/Ascend/pytorch/issues/2753 ## API 功能 torch._C._get_tracing_state() 返回当前线程的 JIT tracing 状态:在 torch.jit.trace 过程中调用时返回非空 TracingState(表示正处于 tracing 流程),在 trace 之外调用时返回空状态。该接口通常用于在 trace 过程中感知当前是否处于 tracing,以便在模型定义/算子封装中区分 trace 期与非 trace 期行为。无入参,返回当前 tracing 状态对象或空。 ## 官方用例情况 检索官方 test/ 目录后确认:官方 test/test_jit.py 等存在 JIT/trace 相关用例,但未发现对 torch._C._get_tracing_state() 的直接覆盖,也没有 NPU 专项用例。本 PR 补充 NPU 侧的直接验证。 ## 测试场景覆盖 新增 test/npu/test_trace_get_tracing_state.py,覆盖以下场景: - trace 外部:torch._C._get_tracing_state() 返回空状态(falsy) - trace 内部:在被 trace 的函数中捕获状态,torch._C._get_tracing_state() is not None 为 True,验证 trace 期间状态可用 - trace 结束返回后状态恢复为空;traced(x) 输出与 x + 1 一致(torch.allclose),且 traced graph 中包含 aten::add,验证 tracing 结果正确 ## 资料补齐情况 该 API 为 PyTorch C++ 私有接口,无独立 native API 文档条目,本次仅补充测试,不涉及资料修改。 ## 运行命令与日志 - 分支:master - 环境:Ascend 910(npu-smi 25.5.1)+ CANN 9.1.0-beta.1 + Python 3.12.13;本地验证使用 torch 2.12.0+cu130 / torch_npu 2.12.0(master_py312 环境近似验证,跨版本以 CI 为准) - 命令: bash cd /workspace unset PYTHONPATH /workspace/venvs/master_py312/bin/python /workspace/user_data/tasks/_align-20260814/test-tracing-state-master/test/npu/test_trace_get_tracing_state.py -v - 结果:Ran 2 tests ... OK(退出码 0) ## 变更说明 - 新增 test/npu/test_trace_get_tracing_state.py,仅补充测试,不修改任何实现代码 - Source: JfanLiu:test-tracing-state-master,Target: master - Previous PR: none See merge request: Ascend/pytorch!42589 | 14 天前 | |
| 2 年前 | ||
refactor: remove unsupported api interception patches Co-authored-by: zhounan0730<zhounan46@huawei.com> # message auto-generated for no-merge-commit merge: !43782 merge master into master refactor: remove unsupported api interception patches Created-by: zhounan0730 Commit-by: zhounan0730 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 https://gitcode.com/Ascend/pytorch/issues/3682 - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 移除 torch_npu 对 6 个 PyTorch 模块方法( nn.Module.share_memory 与 torch.jit.ScriptModule.add_module / bfloat16 / register_buffer / register_parameter / register_module)的 monkey-patch 拦截机制,并**整体删除torch_npu/utils/npu_intercept.py**。其中仍被使用的 CANN 包检测逻辑(_cann_package_check() 与 cann_pytorch_version_map)**迁移**至 torch_npu/_init/registry/registry_manager.py(其唯一调用点所在)。- test/npu/test_unsupport_api.py:删除 6 项 *_runtimeerror 拦截测试;test_Module_share_memory_runtimeerror 改为断言 NPU 上正常执行;test/jit/test_script_module.py:TestScriptModuleShareMemory.test_share_memory_on_npu_raises改为断言 NPU 上正常执行;TestScriptModuleMetadata 的 2 项 raise 测试删除。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 | 测试 | 削减前 | 削减后 | | --- | --- | --- | | test/npu/test_unsupport_api.py | 13 passed | 7 passed, 6 failed | | test/jit/test_script_module.py(ShareMemory/Metadata 类) | 11 passed | 8 passed, 3 failed | candidate 的 9 项失败全部为原拦截 raise 测试: - share_memory / bfloat16:不再抛错(功能可用)——**预期行为变更**; - add_module / register_module:原生 RuntimeError(消息不同); - register_parameter / register_buffer:原生 AttributeError(类型不同)。 官方用例对照 | 官方用例 | 位置 | 实测结果 | | --- | --- | --- | | test_module_share_memory(@onlyPRIVATEUSE1,NPU ) | test/test_torch.py | 削减后 **PASS** / 削减前 **FAIL**(被拦截抛错)——保留拦截补丁会使官方用例失败,删除后通过 | | test_share_memory(CPU storage shared 语义) | test/test_nn.py | 削减后 **PASS** | test_jit.py 中与本修改相关的官方用例全部通过 对进行削减的6个api在npu和gpu环境下进行调用,获取其输出结果,观察削减后两个环境中代码运行结果是否一致 npu运行结果 (Ascend 910B4,PyTorch: 2.13.0) 结果说明:这里主要考虑行为的一致,pass/fail仅表示是否会报错,若fail,则看报错信息是否一致。 削减后 ============================================================ 1. 构造时调用 (ScriptModule __init__ 中) ============================================================ PASS | add_module/register_buffer/register_parameter/register_module in __init__ ============================================================ 2. traced ScriptModule 构造后调用 ============================================================ FAIL | add_module on traced | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul PASS | bfloat16 on traced FAIL | register_buffer on traced | AttributeError: cannot assign buffer before Module.__init__() call FAIL | register_parameter on traced | AttributeError: cannot assign parameter before Module.__init__() call FAIL | register_module on traced | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul ============================================================ 3. scripted ScriptModule 构造后调用 ============================================================ FAIL | add_module on scripted | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul FAIL | bfloat16 on scripted | RuntimeError: bfloat16 is not supported on ScriptModules FAIL | register_buffer on scripted | RuntimeError: Can't add a new parameter after ScriptModule construction. Tried to add 'b FAIL | register_parameter on scripted | RuntimeError: Can't add a new parameter after ScriptModule construction. Tried to add 'p FAIL | register_module on scripted | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul ============================================================ 4. share_memory on nn.Module ============================================================ PASS | share_memory (no-op, return self, device stays npu) cuda运行结果(torch==2.13.0+cu126) ============================================================ 1. 构造时调用 (ScriptModule __init__ 中) ============================================================ PASS | add_module/register_buffer/register_parameter/register_module in __init__ ============================================================ 2. traced ScriptModule 构造后调用 ============================================================ FAIL | add_module on traced | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul PASS | bfloat16 on traced FAIL | register_buffer on traced | AttributeError: cannot assign buffer before Module.__init__() call FAIL | register_parameter on traced | AttributeError: cannot assign parameter before Module.__init__() call FAIL | register_module on traced | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul ============================================================ 3. scripted ScriptModule 构造后调用 ============================================================ FAIL | add_module on scripted | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul FAIL | bfloat16 on scripted | RuntimeError: bfloat16 is not supported on ScriptModules FAIL | register_buffer on scripted | RuntimeError: Can't add a new parameter after ScriptModule construction. Tried to add 'b FAIL | register_parameter on scripted | RuntimeError: Can't add a new parameter after ScriptModule construction. Tried to add 'p FAIL | register_module on scripted | RuntimeError: Cannot re-assign modules in a ScriptModule with non-scripted module, tried to replace existing modul ============================================================ 4. share_memory on nn.Module ============================================================ PASS | share_memory (no-op, return self, device stays cuda) 削减后api调用的测试结果与cuda上一致 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正********确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43782 | 26 天前 | |
| 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 11 天前 | ||
| 3 个月前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 10 天前 | ||
| 2 年前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 19 天前 | ||
| 9 个月前 | ||
| 7 个月前 | ||
| 2 年前 | ||
| 4 天前 | ||
| 27 天前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 4 天前 | ||
| 2 年前 | ||
| 27 天前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 27 天前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 19 天前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 年前 | ||
| 24 天前 | ||
| 2 个月前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 1 年前 | ||
| 5 天前 | ||
| 4 天前 | ||
| 5 天前 | ||
| 12 天前 | ||
| 2 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 8 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 1 个月前 | ||
| 27 天前 | ||
| 2 年前 | ||
| 18 天前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 24 天前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 13 天前 | ||
| 14 天前 | ||
| 2 年前 | ||
| 26 天前 | ||
| 2 年前 |