×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

GDRAM2SRAM和SRAM2GDRAM方向上__memcpy使用出错 已完结 WaterCH2023-04-17 17:13:57 回复 2 查看 使用求助
GDRAM2SRAM和SRAM2GDRAM方向上__memcpy使用出错
分享到:

【寒武纪硬件产品型号】必填*:
例如:MLU270


【使用操作系统】必填*:
例如:ubuntu


代码:

           __sramset(sdata,4*MAX_IMAGE_W*68,0);

           __memcpy(in1, srcimg1 + start*pw, num*pw*sizeof(float), GDRAM2SRAM);

           __memcpy(in2, srcimg2 + start*pw, num*pw*sizeof(float), GDRAM2SRAM);

           __sync_copy_dram_to_sram();

           __memcpy(data1, in1, num*pw*sizeof(float), SRAM2NRAM);

           __memcpy(data2, in2, num*pw*sizeof(float), SRAM2NRAM);

           __sync_copy_sram_to_nram();

           __bang_sub(data1, data1, data2, num*pw);

           __sync_compute();

           __memcpy(out, data1, num*pw*sizeof(float), NRAM2SRAM);

           __sync_copy_nram_to_sram();

           __memcpy(dstimg + start*pw, out, num*pw*sizeof(float), SRAM2GDRAM);

           __sync_copy_sram_to_dram();

出现结果:每一次计算结果都不同 且计算错误

把GDRAM2SRAM方向上__memcpy的2行代码注释,计算结果就会稳定但并不为0

(说明SRAM2GDRAM方向上__memcpy根本就没有拷贝数据,因为sram全是0才对)

总之只要涉及到GDRAM和SRAM之间互相拷贝的代码,就会出错。

(已经测试过SRAM和NRAM之间的计算和拷贝可以正常进行,且并不是CNRT_FUNC_TYPE或dim设置的问题

之前在论坛有帖子说sram不能从gdram上拷贝,需要中转ldram,但是尝试了ldram也会出现与sram同样的问题

(甚至把SRAM排除,仅涉及到GDRAM和LDRAM之间数据拷贝都会出错)

版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭