| Files | Last commit | Last update |
|---|---|---|
fix: StatelessRandomChoiceWithMask补注册OutputShapeDependOnCompute并补充UT;补齐4个random算子tiling UT的expectTilingData;修复Bernoulli两个ST executor的__call__重复定义 Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !6835 merge fix/stateless-random-choice-with-mask-output-shape-depend into master fix: StatelessRandomChoiceWithMask补注册OutputShapeDependOnCompute并补充UT;补齐4个random算子tiling UT的expectTilingData;修复Bernoulli两个ST executor的__call__重复定义 Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 描述 本 PR 包含两部分修复(commit 已合一): ### 一、StatelessRandomChoiceWithMask 补注册 OutputShapeDependOnCompute StatelessRandomChoiceWithMask 的输出 y/mask 为数据依赖 shape(三类算子),kernel 侧已实现 shapeOut 缓冲区回写真实输出 shape,但 op impl 注册链缺少 OutputShapeDependOnCompute 标记: - GE 编译期不会给节点打 DEPEND_SHAPE_RANGE 三类算子标记(shape_inference.cc 中仅当 functions->IsOutputShapeDependOnCompute() 为真时设置) - rt v2 执行期走普通 InferStorageShape 路径,输出 shape 保持 [-1, rank] - CalcAlignedSizeByShape 按 -1 × rank 计算 tensor size 得负数失败,整图执行报错 RunGraph failed, error code:1343242272,报错数值随输入 rank 变化(shape_size[-1]/[-2]/[-3]/[-4]) GEIR 用例 StatelessRandomChoiceWithMask_bool_int32_int64_ND_* 的 s/d 两模式全量在同一报错点失败,对比可正常执行的同类算子 NonZero/UniqueConsecutive/BroadcastGradientArgs,其 IMPL_OP_INFERSHAPE 注册链均含 OutputShapeDependOnCompute,本算子缺失。 **修复**:注册链补 .OutputShapeDependOnCompute({OUT_IDX_Y, OUT_IDX_MASK})。补齐后走三类算子路径:编译期打 DEPEND_SHAPE_RANGE 标记 → lowering 走 InferMaxShape(调用算子已注册的 InferShapeRange 按 max shape 分配输出内存并分配 shape buffer)→ kernel 回写真实 shape → SetOutputShape 同步实际输出 shape。kernel 侧无需改动。另新增 3 个 UT 用例覆盖 InferShapeRange 正常/上界路径与注册完整性断言。 ### 二、补齐公共 tiling 结构 prob 字段扩展后 4 个算子 tiling UT 的 expectTilingData !5714 为 bernoulli 标量场景在公共结构 RandomUnifiedSimtTilingDataStruct 末尾新增 probDims(int32+padding)/probSizes[8]/probStrides[8](共 17 个 int64 槽位),tilingData 序列化从 51 词扩展至 68 词,但下列 4 个算子 tiling UT 的 expectTilingData 仍是旧 51 词,经 tiling_case_executor.cpp 全量逐词比较时尾部多出 17 个 0 而失败(共 15 例): - sim_thread_exponential: fp32/fp16/bf16 3 例 - stateless_random: test_0/test_1 2 例 - stateless_uniform: test_0~test_8 9 例 - truncated_normal_v2: 910D_float_001 1 例 **修复**:各 UT 新增 PROB_ADDR_TAIL 宏追加至 expectTilingData 尾部([51] probDims(int32+padding) [52..59] probSizes[8] [60..67] probStrides[8],仅 stateless_bernoulli 填充、上述算子不消费恒为 0),并对涉改文件做 clang-format 归一。 ### 三、修复 aclnnBernoulli/aclnnBernoulliTensor 两个 ST executor 的 __call__ 重复定义 executor_aclnnBernoulli.py 与 executor_aclnnBernoulliTensor.py 的 Method 类中 __call__ 定义了两遍:第一份(含 super().__init__(task_result) 与 OpsDataset.seed_everything())被第二份覆盖成为死代码,种子固定逻辑永不执行,两个 ST 用例的随机输入不受种子控制。 **修复**:第一份改回 __init__(与 aclnnDropoutGenMaskV2/aclnnInplaceUniform 等规范 executor 一致),使 seed_everything 在构造期生效;同步清理 ruff 存量问题(未使用的 torch_npu/numpy 导入、引号与空白归一,规范 executor 均不显式导入 torch_npu,NPU 后端由 atk 框架统一管理)。AST 校验两 Method 类方法序列均为 ['__init__','__call__']。 ## 关联的Issue fixes #4275(UT 失败统一单 issue 跟踪,原按算子拆分的 #4263~#4266 已关闭并入) fixes #3835(Bernoulli 两个 ST executor 的 __call__ 重复定义,种子固定逻辑死代码) GEIR 全量 200 个 all_coverage 用例在 rt v2 路径执行失败(shape_utils.cc CalcAlignedSizeByShape: shape_size[-N])。 ## 测试 - StatelessRandomChoiceWithMask infershape UT 通过 - ophost UT(ascend950)4 算子共 33 用例全部通过(此前失败的 15 例逐条确认恢复) - pre-commit 全钩子通过(clang-format/codespell/OAT 合规等) - 待 GEIR 环境重跑 all_coverage s/d 两模式回归验证 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6835 | 11 days ago | |
fix(stateless_bernoulli): 标量场景对齐竞品 bernoulli kernel 的随机数映射与比较语义 Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !5714 merge fix/bernoulli-scalar-philox-align into master fix(stateless_bernoulli): 标量场景对齐竞品 bernoulli kernel 的随机数映射与比较语义 Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 描述 arch35 标量 prob 场景(prob 为单元素 tensor)与竞品(PyTorch 标量 bernoulli CUDA kernel)存在两处不一致: 1. 元素→随机数映射为连续映射(线程 t 处理 4 个连续元素),竞品标量 kernel 为交织映射(步长=总线程数 T,元素 li 由虚拟线程 li%T 的第 li/(T*4) 次 philox 调用生成,取第 (li/T)%4 个分量); 2. 比较使用 results <= p(竞品张量版语义),竞品标量版为严格小于 rand < p(transformation::bernoulli)。 修复:标量场景改用 PhiloxSimtKernelDiscontinuous 交织映射模板(与 sim_thread_exponential 接入方式一致),新增 BernoulliScalarTransform 完成 u 换算(与 curand_uniform 同式:(0,1])与 u < p 严格比较;张量场景保持原实现不变(连续映射 + <=,恰与竞品张量版语义一致)。 注意:同一 (seed, offset) 下标量场景输出与旧版本不同,属对齐性行为变更;offset 换算逻辑(PhiloxAlgParsInit)与消耗总量公式不变。 ## 关联的Issue 无 ## 测试 - pre-commit 门禁(clang-format / OAT 合规)全部通过 - UT 单测运行级用例(prob=0.5,tests/ut/op_kernel/test_stateless_bernoulli.cpp) - 上板 ST:与 GPU golden 对比(fp16/bf16/fp32 × p∈{0, 1, 0.25, 0.5}、numel%4≠0 尾部、numel>2^31 分支)——待上卡验证 ## 文档更新 无需更新(接口契约不变,文档无映射/输出流相关描述) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: --- 关联 issue: fixes #4188 (完整问题背景/修改方案/验证记录见 issue #4188) See merge request: cann/ops-math!5714 | 13 days ago | |
update operators Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !916 merge master into master update operators Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增强以下算子功能 tensor_equal tensor_move tril triu stalessrandomuniform stalessrandomnormal assign dsarandomuniform dsarandomnormal ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> #530 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!916 | 9 months ago |
| Files | Last commit | Last update |
|---|---|---|
| 11 days ago | ||
| 13 days ago | ||
| 9 months ago |