已开启
反合 test: expand NPU unit coverage for Issue #31 #171
xlc2020创建于 24 天前
反合 test: expand NPU unit coverage for Issue #31 #171
已开启
合并受阻
ascend-robot
24 天前 评论:
24 天前 评论:
compile


atomgit-bot
24 天前 评论:
24 天前 评论:
变更摘要
本 PR 针对 Ascend/faiss Issue #31,在现有单卡可执行的功能测试基础上,大幅补充 NPU 适配层的单元测试以提升分支覆盖率;distributed、replicated、sharded 及多设备路径无法在本地执行,故新增用例主要聚焦空输入、参数校验、ID 生成、分页委派、重建、资源生命周期、算子可用性等边界与契约行为,无设备时沿用 FAISS_NPU_SKIP_IF_NO_DEVICE 跳过机制,主机侧校验不依赖 NPU。同时修正了 NPU IVFPQ 搜索路径的 metric 状态传递:给 AscendcIvfpqSearchDistanceIp 自定义算子新增必填 metric_type 属性(0=INNER_PRODUCT、1=L2),并在 IVFPQ::runL3DistOp_ 与 tiling 逻辑中按 metric_ 选择 ReduceMode::IP 或 ReduceMode::L2,使相关测试验证正确的 API 语义。改动范围覆盖 CopyUtils、Float16、DataCast、Tensor、DeviceTensor、DeviceVector、Operator、OpManager、DeviceUtils、资源管理及 Flat/IVF/IVFPQ/NpuIndex/Cloner 等测试,并同步了上游 main(1cf9386)的流水线修正。
主要改动
- 修正 NPU IVFPQ 搜索的 metric 传递链路:
IVFPQ::runL3DistOp_调用 workspace 查询接口时新增metric_ == faiss::METRIC_INNER_PRODUCT ? 0 : 1实参;算子 host 侧在ascendc_ivfpq_search_distance_ip_def.cpp中注册必填metric_type属性,tiling 函数增加GetAttrs()判空与取值 0/1 校验,并据此在ReduceMode::IP与ReduceMode::L2间选择 reduce 模式。 - 新增
NpuIndex基类与 Flat 契约测试: 通过CapturingNpuIndex验证无 id 添加时顺序 ID 生成、addPaged_/addPage_委派、两种 min-paging 搜索分派模式及重建/残差路径;补充ImplFlatIndex/Int8FlatIndex/NpuIndexFlat包装类对reconstruct、reconstruct_batch、getNormBlockSize、compute_residual等非法参数与越界 key 的拒绝用例,以及 Int8 存储的 L2/IP 搜索精确命中与排序不变式验证。 - 大幅扩充 IVFPQ/IVF 实现层与集成测试: 新增倒排列表与设备存储的拷贝往返(
copyInvertedListsFrom/copyInvertedListsTo)、updateQuantizer前置条件、粗量化搜索返回 ids/distances/可选 residuals 与 centroids、非法 topk 与 nprobe 拒绝、setIndex_对每个配置项的独立一致性校验、host id map 惰性重建与维护(ensureHostIdMap_/maintainHostIdMap)、reserveMemory/reclaimMemory/reset空态语义、训练前置契约(已训练拒重训、就绪量化器快路径)及copyTo释放目标自有 quantizer 等分支。 - 补充大量主机侧契约用例(无 NPU 亦可运行): 覆盖
CopyUtils空/别名缓冲区与分块 ACL 助手的容量预校验、DataCast对 host-to-host 等不支持位置的提前拒绝、Float16大数据量并行转换及标量尾段、DeviceTensor主机视图指针/字节大小与 fill/copy 空视图、Operator/OpManager的移动语义、越界访问、空描述注册与未初始化算子拒绝执行、DeviceUtils属性查询与DeviceScope/AclEvent移动,以及资源类AllocTypeToString/MemorySpaceToString/NpuMemoryReservation移动与释放路径。 - 测试基础设施与既有用例调整:
TestNpuFlatOpApi增加缺失算子符号返回nullptr的断言;TestNpuCloner::UnsupportedIndexType改用无 NPU 实现的IndexLSH真正验证克隆器拒绝逻辑;TestNpuTempMemory调大临时池并排队 256 次异步 memset,用AclEvent状态显式断言"流未完成前不回收复用";多处 Flat/IVFPQ 测试关闭 pinned memory 或设置copyFromBuildHostIdMap等配置,以走自有 staging 回退与 host map 相关路径。


不准确?
ascend-robot
24 天前 评论:
24 天前 评论:
atomgit-bot
24 天前 评论:
24 天前 评论:
此处折叠了880条消息 查看更多
问题/功能描述
Ascend/faiss Issue #31 需要补充 NPU 适配部分的单元测试并提高覆盖率。单卡环境下现有功能测试可以通过,但 distributed、replicated、sharded 和多设备资源路径无法执行,导致分支覆盖率不足。
修改方案描述
验证情况
在同步上游前的单卡 HiDevLab 基线(4b9836d):
当前 MR 提交为 7f70ea3,尚未在本地运行 NPU 测试;将使用项目 PR 流水线的真实 2 卡 A2 环境完成编译、UT 和 lcov/genhtml 验证,并单独记录多卡结果。
开发自检
test/31-ut-coverage -> Ascend/faiss:main