已关闭
[Bug-Report|缺陷反馈]: O1用户测试用例,LoadData接口在transpose部分场景精度no pass #1586
fangxinnan创建于  14 天前关闭于  18 小时前
fangxinnan
14 天前 创建

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

Describe the current behavior / 问题描述 (Mandatory / 必填)

用户测试LoadData相关接口,替换不同的loadData API 进行测试,在部分场景下出现精度no pass。

Environment / 环境信息 (Mandatory / 必填)

芯片:950PR
CANN:CANN 9.1.0

Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)

4d1fda1e5ba640f8b6b7e153b9212728.tgz

附件在上:
1、解压附件
2、在CANN环境下,构建工程:bash run.sh --matrix --rounds 1 --output-dir ./load-data-l0b-results
3、执行deep/square用例:
./build/load_data_l0b_reproducer --mode legacy --shape deep --device 0
./build/load_data_l0b_reproducer --mode transpose --shape deep --device 0
./build/load_data_l0b_reproducer --mode v2 --shape deep --device 0
./build/load_data_l0b_reproducer --mode legacy --shape square_32 --device 0
./build/load_data_l0b_reproducer --mode transpose --shape square_32 --device 0
./build/load_data_l0b_reproducer --mode v2 --shape square_32 --device 0
4、legacy场景下精度no pass

Describe the expected behavior / 预期结果 (Mandatory / 必填)

预期精度均pass

1、工程中的readme说明了使用方式
2、初步分析:(仅供参考)
dav_3510 实现丢失起点
image.png

第二次调用时 kStartPosition=1、kStep=1,但转置循环只有 i=0,底层实际收到的源位置仍是 0。目标 L0B 地址虽然前移,源 B1 地址却未按 startIndex 前移:
期望 L0B = [B0, B1]
实际 L0B = [B0, B0]
mStartPosition=0 本身没有错。旧版参数只提供线性 startIndex,dav_3510 封装将 mStartPosition 固定为 0,并把 startIndex 映射到 kStartPosition。错误是转置分支随后没有使用 kStartPosition。

Special notes for this issue/备注 (Optional / 选填)

likedislike
Ppengcheng1024成员
14 天前 将 pengcheng1024 设为负责人
pengcheng1024成员
14 天前 评论:

您好,感谢关注,当前问题正在尝试本地复现定位中。

likedislike
pengcheng1024成员
5 天前 评论:

问题已复现定位,当前兼容性接口实现存在问题,修复方案验证中

likedislike
Ppengcheng1024成员
4 天前 关联了pull request:bugfix for 950 basic api loaddata Compatibility interface
pengcheng1024成员
3 天前 评论:

修复方案:在转置分支中新增 srcFractalIndex,其值为 kStartPosition 加上 i * loadDataParam.srcStride,并使用 static_cast<uint64_t> 防止大偏移量计算溢出。
修正源地址偏移:load_cbuf_to_cb 的源地址由原来的 src 改为 src + srcFractalIndex * VALUE_512 / sizeof(T),使转置场景下源数据按 stride 逐块定位。
当前修复PR已合入,本地验证对应问题已解决。

对应日志:
SUMMARY run_kind=matrix rounds=1 shapes=6 device_modes=3 device_runs=18 golden_runs=6 total_records=24 passed=24 failed=0 errors=0 legacy_failed=0 replacement_failed=0 strict=0
ALL_MODES_PASS legacy, transpose and v2 passed.
对各个参数进行了泛化验证测试,测试通过;

Shape范围 Shape数量 repeatTimes范围 最大startIndex 结果
16到256,步长16 16 1到16 112 16/16 PASS
272到512,步长16 16 17到32 224 16/16 PASS
528到768,步长16 16 33到48 336 16/16 PASS
784到1024,步长16 16 49到64 448 16/16 PASS
合计 64 1到64 448 64/64 PASS
已有的测试用例case均已验证通过。
likedislike
pengcheng1024成员
19 小时前 评论:

如果确认问题已修复,我们这边将会关闭这个issue ,后续有其他问题可以继续通过issuse持续沟通交流。

likedislike
pengcheng1024成员
18 小时前 评论:
Ppengcheng1024成员
18 小时前 issue状态由 待办的 改变为 已完成
Ppengcheng1024成员
18 小时前 关闭了 issue
CANN-robotCANN-robot成员
16 小时前 添加了label:resolved