已关闭
[Bug-Report|缺陷反馈]: O1用户测试用例,LoadData接口在transpose部分场景精度no pass #1586
fangxinnan创建于 14 天前关闭于 18 小时前
14 天前 将 pengcheng1024 设为负责人
pengcheng1024
14 天前 评论:
14 天前 评论:
您好,感谢关注,当前问题正在尝试本地复现定位中。


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


4 天前 关联了pull request:bugfix for 950 basic api loaddata Compatibility interface
pengcheng1024
3 天前 评论:
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均已验证通过。 |


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


pengcheng1024
18 小时前 评论:
18 小时前 评论:
18 小时前 issue状态由 待办的 改变为 已完成
18 小时前 关闭了 issue
16 小时前 添加了label:resolved
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
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
1、工程中的readme说明了使用方式

2、初步分析:(仅供参考)
dav_3510 实现丢失起点
第二次调用时 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 / 选填)