已合并
【API一致性任务】test: add consistency validation cases for torch.BoolStorage / torch_npu.npu.BoolStorage (#2955) #42278
luoxiaoyan2024创建于 7月21日
【API一致性任务】test: add consistency validation cases for torch.BoolStorage / torch_npu.npu.BoolStorage (#2955) #42278
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 luoxiaoyan2024 的贡献)7月21日 创建了 pull request,commit c3446926
7月21日 关联了issue:【社区任务】7月社区任务第二期-Ascend for PyTorch API 一致性开发(78)
atomgit-bot
7月21日 评论:
7月21日 评论:
🤖 正在生成合并请求摘要,请稍候…


atomgit-bot
7月21日 评论:
7月21日 评论:
🤖 AI 代码检视正在进行中,请稍候…


ascend-robot
7月21日 评论:
7月21日 评论:
此处折叠了171条消息 查看更多
梁松伟
8 天前 评论:
8 天前 评论:
/approve


8 天前 添加了label:approvedlgtm
8 天前 删除了label:ci-pipeline-passed
8 天前 合入了pull request
ascend-robot
8 天前 评论:
8 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13978 [ commitID:dfbe30b3 ] 已完成


【合入来源】
关联 issue:https://gitcode.com/Ascend/pytorch/issues/2955
【修改方案】
一、API 功能说明
torch.BoolStorage是 PyTorch 的布尔类型存储类(TypedStorage 子类),核心功能如下:torch.bool为元素类型,提供按索引读写、填充、转为张量等存储语义。torch_npu.npu.BoolStorage是昇腾 NPU 上的布尔存储类,用于 NPU 张量的底层存储;NPU 布尔张量的.storage()即返回该类型实例。torch.IntStorage/torch.FloatStorage等同族,是 PyTorch 原生 API,非 torch_npu 私有扩展。二、测试文件 test_bool_storage.py 完整验证该 API 的原因
该用例针对
torch.BoolStorage与torch_npu.npu.BoolStorage两类存储类,从构造、索引、填充、类型/大小、设备一致性四个维度全覆盖验证,具体如下:torch.BoolStorage的验证(test_cpu_bool_storage_basic / _from_sequence / _empty / _out_of_bounds)torch.BoolStorage(3)构造并逐个 setitem/getitem,确认tolist()与预期一致、与社区行为一致。size()==3、element_size()==1(与torch.BoolStorage().element_size()上游预期一致)。fill_(False)后tolist()全 False,并经torch.BoolTensor(s)往返确认dtype==torch.bool、值一致。torch_npu.npu.BoolStorage的验证(test_npu_bool_storage_basic / _from_sequence / _empty / _out_of_bounds / test_npu_tensor_storage_consistency)torch_npu.npu.BoolStorage在 NPU 上已注册。torch_npu.npu.BoolStorage(4)构造并索引,确认tolist()/dtype==torch.bool/element_size()==1/size()==4。fill_(True)后tolist()全 True。.storage()是torch_npu.npu.BoolStorage实例、dtype==torch.bool、tolist()与张量一致。.storage()取,符合规范。综上,该文件覆盖了
BoolStorage存储类在 NPU 上的「正常场景 + 索引边界 + 元信息 + 设备一致性」,是对该存储类在 NPU 上行为的完整且严谨的验证。三、NPU 适配
torch.BoolStorage与torch_npu.npu.BoolStorage适配昇腾 NPU 时无需修改 API 本身,具体分析:element_size()、tolist()、fill_()、索引等均为通用存储语义,无论 CPU/GPU/NPU 调用结果一致,无设备特化分支。torch_npu.npu.BoolStorage已在 torch_npu 中注册,NPU 布尔张量的存储即其实例,无需新增绑定。【资料变更】
已检查文档 https://gitcode.com/Ascend/pytorch/tree/v2.7.1/docs/zh/native_apis,
torch.BoolStorage为标准 storage 类、非私有接口、非缺失 API,依据 API 一致性说明文档 §2 不纳入 native_apis 资料补齐范围,故不需要提交 PR 修改资料。【接口变更】
【功能验证】
在 Ascend 910B NPU 环境、torch 2.7.1 / 2.11.0 / 2.12.0 / master(nightly)+ 对应 torch_npu 上执行该用例,均通过。代表性日志(2.7.1 与 2.12.0)如下:
其余 2 个版本(2.11.0 / master)执行结果一致,均输出
Ran 9 tests ... OK。用例共包含 9 个测试方法:CPU 侧
test_cpu_bool_storage_basic/test_cpu_bool_storage_from_sequence/test_cpu_bool_storage_empty/test_cpu_bool_storage_out_of_bounds;NPU 侧test_npu_bool_storage_basic/test_npu_bool_storage_from_sequence/test_npu_bool_storage_empty/test_npu_bool_storage_out_of_bounds/test_npu_tensor_storage_consistency。【CheckList】