已关闭
【API一致性任务】: torch.sym_ite 测试覆盖与 NPU 适配检查 #3616
chenlan114514创建于 8月1日关闭于 17 天前
8月1日 修改了issue 的描述
8月1日 修改标题为 “【社区任务】: torch.sym_ite 测试覆盖与 NPU 适配检查”,原标题为“[社区任务]: torch.sym_ite 测试覆盖与 NPU 适配检查”
8月1日 修改标题为 “【社区任务】: torch.sym_ite 测试覆盖与 NPU 适配检查”,原标题为“[社区任务]: torch.sym_ite 测试覆盖与 NPU 适配检查”
8月1日 修改了issue 的描述
8月3日 添加了label:bot-triaged
TorchNPU-Bot
8月3日 评论:
8月3日 评论:
检测到当前 issue 已关联 PR !43554,自动添加标签:bot-triaged


8月9日 修改了issue 的描述
8月9日 关联了看板:FrameworkPTAdapter 版本issue看板
8月13日 修改标题为 “【API一致性任务】: torch.sym_ite 测试覆盖与 NPU 适配检查”,原标题为“【社区任务】: torch.sym_ite 测试覆盖与 NPU 适配检查”
8月13日 修改标题为 “【API一致性任务】: torch.sym_ite 测试覆盖与 NPU 适配检查”,原标题为“【社区任务】: torch.sym_ite 测试覆盖与 NPU 适配检查”
8月13日 添加了label:event: api-consistency
TorchNPU-Bot
8月13日 评论:
8月13日 评论:
检测到社区任务相关 issue,自动添加标签:event: api-consistency


8月15日 修改了issue 的描述
此处折叠了5条事件消息 查看更多
17 天前 添加了label:help-wanted
TorchNPU-Bot
17 天前 评论:
17 天前 评论:
检测到社区任务相关 issue,自动添加标签:event: api-consistency、help-wanted


TorchNPU-Bot
17 天前 评论:
17 天前 评论:
检测到社区任务相关 issue,自动添加标签:event: api-consistency、help-wanted


17 天前 添加了label:resolved
任务 issue 来源:【社区任务】7月社区任务第四期-Ascend for PyTorch API 一致性开发(84) #3567
环境信息
torch 2.7.1+cpu,torch-npu 2.7.1.post4torch 2.9.0+cpu,torch-npu 2.9.0.post2torch 2.10.0+cpu,torch-npu 2.10.0torch 2.11.0+cpu,torch-npu 2.11.0rc1torch 2.12.0+cu130,torch-npu 2.12.0rc1使用场景及问题
当前需确认
torch.sym_ite在 NPU 环境下的测试覆盖情况,涉及以下 API:torch.sym_ite经检查,PyTorch 官方社区已有对应测试用例,分布在多个测试文件中。本次基于官方用例检查 NPU 环境适配情况,确认是否需要为
torch-npu各版本(v2.7.1 / v2.11.0 / v2.12.0)提交test_upstreampatch,以及是否需要补充 native API 文档。一、API 功能说明
torch.sym_ite是 PyTorch 符号整数系统中的条件选择函数,用于在符号整数或普通整数之间进行分支选择:t if b else f(SymInt-aware 三元运算符)。该 API 属于元编程/符号计算范畴,不涉及张量数据或设备操作,与底层硬件(CPU/CUDA/NPU)完全解耦。该 API 为 PyTorch 公开接口,已由官方添加 docstring 并列入参考页面。官方文档参考:torch.sym_ite
二、社区用例覆盖情况
通过以下命令在 PyTorch 官方仓库
test/目录中搜索torch.sym_ite相关用例:grep -rn "sym_ite" --include="*.py" test/ | awk -F: '{print $1}' | sort -u搜索运行结果如下:
test/export/test_serialize.py test/test_dynamic_shapes.py根据搜索结果,共涉及 2 个测试文件,包含
test_sym_ite和test_tracing_sym_ite等多个测试方法。结论:PyTorch 官方社区已有完整用例覆盖
torch.sym_ite,本次无需在torch-npu的test/目录新增自定义测试文件。三、NPU 适配分析
torch.sym_ite为 PyTorch 符号整数系统中的条件选择函数,属于元编程/符号计算范畴,不涉及张量数据或设备操作。其行为与底层硬件完全解耦,无需 monkey-patch 或设备映射。适配验证
通过以下脚本在 NPU 环境下直接调用
torch.sym_ite,并验证其返回值可用于 NPU 张量创建:python3 -c " import torch import torch_npu assert torch_npu.npu.is_available(), 'NPU not available' print('✓ NPU is available') # 1. 普通整数条件选择 a = 5 b = 3 cond = a > b result = torch.sym_ite(cond, a, b) assert result == 5, 'Conditional selection with ints failed' print('✓ Conditional selection with ints: result =', result) # 2. NPU 张量形状作为输入 x = torch.randn(5, 3).npu() result2 = torch.sym_ite(True, x.shape[0], x.shape[1]) assert result2 == 5, 'Shape-based selection failed' print('✓ Shape-based selection with NPU tensor: result2 =', result2) # 3. 使用返回值创建 NPU 张量 y = torch.empty(result2, 10).npu() assert y.device.type == 'npu', 'Tensor not on NPU' print('✓ New tensor device:', y.device) print('✓ All tests passed successfully!') "输出:
该验证直接证明:
torch.sym_ite在 NPU 环境下可正常调用,返回正确的整数结果。sym_ite的返回值作为 NPU 张量的形状参数,能够成功创建 NPU 张量。四、功能验证
选取 PyTorch 官方测试
test.test_dynamic_shapes.TestPySymInt.test_tracing_sym_ite作为验证用例。测试命令
v2.7.1
cd /workspace/pytorch-v2.7.1 && \ export PYTHONPATH=$(pwd) && \ python3 -c "import torch_npu; assert torch_npu.npu.is_available(), 'NPU not available'" && \ PYTHONWARNINGS=ignore python3 -m unittest test.test_dynamic_shapes.TestPySymInt.test_tracing_sym_ite -vv2.11.0
cd /workspace/pytorch-v2.11.0 && \ export PYTHONPATH=$(pwd) && \ python3 -c "import torch_npu; assert torch_npu.npu.is_available(), 'NPU not available'" && \ PYTHONWARNINGS=ignore python3 -m unittest test.test_dynamic_shapes.TestPySymInt.test_tracing_sym_ite -vv2.12.0
cd /workspace/pytorch-v2.12.0 && \ export PYTHONPATH=$(pwd) && \ python3 -c "import torch_npu; assert torch_npu.npu.is_available(), 'NPU not available'" && \ PYTHONWARNINGS=ignore python3 -m unittest test.test_dynamic_shapes.TestPySymInt.test_tracing_sym_ite -v测试结果
v2.7.1
v2.11.0
v2.12.0
因此,
torch.sym_ite在 v2.7.1、v2.11.0、v2.12.0 三个版本的torch-npu环境下功能正常。五、test_upstream patch 处理
本次直接运行 PyTorch 官方原始测试文件:
test/test_dynamic_shapes.pyv2.7.1、v2.11.0、v2.12.0 三个版本均无需修改即可通过。
测试过程中不需要修改以下内容:
sym_ite调用方式;因此,目标官方用例无需进行 NPU 专项适配,本任务无需为该 API 新增或修改
test_upstreampatch。同时,由于 PyTorch 官方已有相关测试覆盖,本任务无需在 master 分支的
test/目录新增自定义测试用例。六、资料检查
检查 master 分支
docs/zh/api/native_api/下各版本torch.md对torch.sym_ite的标注:for ver in 2.7.1 2.11.0 2.12.0 2.13.0; do dir="pytorch_${ver//./-}" echo "=== $dir ===" grep -i "sym_ite" docs/zh/api/native_api/$dir/torch.md || echo "❌ 未找到" done执行结果:
结论:各版本均未标注
torch.sym_ite。torch.sym_ite为 PyTorch 公开接口(非私有接口),属于符号整数计算类 API,不涉及 Tensor 数据计算,需要在torch.md的## Symbolic Numbers部分补充文档资料。七、结论
torch.sym_ite已有 PyTorch 官方社区用例覆盖。test/test_dynamic_shapes.py和test/export/test_serialize.py。TestPySymInt.test_tracing_sym_ite。torch-npu的test/目录新增测试用例。test_upstreampatch。