已开启
补充 core/shard 与 custom_ops/experimental 的 UT 覆盖率 #159
hedongdong创建于  5月20日
hedongdong成员
5月20日 创建

背景

HyperParallel 对单文件 UT 覆盖率有 ≥70% 的要求。当前以下文件覆盖率不达标:

文件 当前覆盖率
hyper_parallel/core/shard/api.py 8%
hyper_parallel/core/shard/custom_shard.py 18%
hyper_parallel/core/shard/_op_dispatch.py 31%
hyper_parallel/core/shard/ops/parallel_flash_attention_score.py 0%
hyper_parallel/core/shard/ops/parallel_scaled_dot_product_attention.py 18%
hyper_parallel/core/shard/ops/parallel_tuple_elementwise.py 50%
hyper_parallel/core/shard/ops/parallel_ops.py 52%
hyper_parallel/core/shard/ops/parallel_one_hot_ext.py 54%
hyper_parallel/core/shard/ops/parallel_embedding.py 65%
hyper_parallel/core/shard/ops/parallel_conv3d.py 69%
hyper_parallel/custom_ops/experimental/ 0%(无 UT 文件)

此外,custom_ops/experimental/__init__.py 将实现与导出混写在同一文件,不符合模块分离约定。

目标

  1. 重构 custom_ops/experimental:将 5 个 wrapper 函数的实现从 __init__.py 提取到 experimental_ops.py,__init__.py 保持纯 re-export,对外接口不变。

  2. 补充 UT,使所有文件达到 ≥70% 覆盖率:

    • core/shard/api.py:新建 test_api.py,覆盖 hook 注册、layout 转换、DTensor 重分布路径
    • core/shard/custom_shard.py:新建 test_custom_shard.py,覆盖所有分支
    • core/shard/_op_dispatch.py:补充 test_op_dispatch.py,覆盖 LayoutCacheManager、_pack_infer_output、_with_layout_infer、dispatch 流程
    • ops/parallel_flash_attention_score.py:新建,覆盖 ParallelFlashAttention 各 layout 模式
    • ops/parallel_ops.py:新建,覆盖基类逻辑
    • ops/parallel_tuple_elementwise.py:新建,覆盖 layout 一致性推断
    • ops/parallel_scaled_dot_product_attention.py:补充,覆盖 get_expand_impl、causal mask
    • ops/parallel_embedding.py、ops/parallel_conv3d.py、ops/parallel_one_hot_ext.py:补充 get_expand_impl 路径
    • custom_ops/experimental/experimental_ops.py:新建 test_experimental_ops.py,100% 覆盖

所有 UT 使用 mock 平台,无 GPU/NPU 硬件依赖。

相关 PR

!665

likedislike
Hhedongdong成员
5月20日 关联了pull request:test: improve UT coverage for core/shard and custom_ops/experimental
Hhedongdong成员
5月20日 修改了issue 的描述