已关闭
[算子开发][内测体验][AscendC] [Documentation|文档反馈]: Fmod 样例的所有被除数都是 0,无法验证核心计算 #1480
yc创建于  8月11日关闭于  8月27日
yc
8月11日 创建

Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.

Document Link(文档链接)

https://gitcode.com/cann/asc-devkit/blob/master/examples/01_simd_cpp_api/04_advanced_api/10_math/fmod/scripts/gen_data.py

Issues Section(问题文档片段)

image.png
全部测试都是Fmod(0, y) = 0,即使kernel错误,样例也能通过。
建议将 src0 改为包含正数、负数和非整数倍关系的非零随机数据,并避免 src1 为零。

Existing Issues(存在的问题)

likedislike
Llihuaichao成员
8月11日 将 lihuaichao 设为负责人
Llihuaichao成员
8月11日 移除了负责人 lihuaichao
Llihuaichao成员
8月11日 将 maohaodi 设为负责人
Llihuaichao成员
8月11日 移除了负责人 maohaodi
Llihuaichao成员
8月11日 将 haipingmao 设为负责人
Llihuaichao成员
8月11日 移除了负责人 lihuaichao
lihuaichao成员
8月11日 评论:

您好,我们已经识别到此问题,将会在后续的PR中修复。

感谢您对社区的支持与贡献!

likedislike
maohp_hw
maohp_hw成员
8月27日 评论:

您好

我们已针对此样例的gen_data.py做如下修改:

详细方案

  1. 固定随机种子

np.random.seed(123321)

保证每次生成的数据一致,避免CI测试数据随机变化。同时避免随机数据
偶发落在整数商边界附近,引入不同硬件实现之间的舍入差异。

  1. 修改被除数src0的数据范围

src0 = generate_random_data(-10.0, 10.0, src_shape, dtype)

使用跨正负数的非退化随机区间,避免输入全部为0,并覆盖正、负被除
数场景。

  1. 保证除数src1非0并覆盖正负值

src1 = generate_random_data(0.5, 5.0, src_shape, dtype)
src1[1::2] = -src1[1::2]

先生成绝对值范围为[0.5, 5.0]的除数,再将奇数位置改为负数:

  • 明确避免除数为0。
  • 避免除数过小导致商过大或精度不稳定。
  • 同时覆盖正除数和负除数场景。
  1. 注入固定测试数据

src0[:4] = [2.0, 2.0, -3.0, -3.0]
src1[:4] = [1.5, -1.5, 1.1, -1.1]

前4组数据用于覆盖被除数和除数的四种符号组合:

src0 src1 预期结果 场景
2.0 1.5 0.5 正被除数、正除数
2.0 -1.5 0.5 正被除数、负除数
-3.0 1.1 约-0.8 负被除数、正除数
-3.0 -1.1 约-0.8 负被除数、负除数

其中Fmod(2.0, 1.5)和Fmod(-3.0, 1.1)与样例README中的计算示例保持
一致。

该设计还可以验证Fmod余数符号跟随被除数src0,不受除数src1符号影
响。

详情可参见PR:https://gitcode.com/cann/asc-devkit/pull/5372

likedislike
maohp_hw
maohp_hw成员
8月27日 评论:

您好

相关问题已修复,如果没有其他的问题,我们先关闭此Issue。

欢迎您再提Issue与我们交流,共建美好社区~

likedislike
maohp_hwmaohp_hw成员
8月27日 issue状态由 进行中 改变为 已解决
maohp_hwmaohp_hw成员
8月27日 关闭了 issue
CANN-robotCANN-robot成员
8月27日 添加了label:resolved