×

签到

分享到微信

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

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

【经验分享帖】王正千分享实验经验二+1951317+19计科3班 Corviknight2022-07-01 15:10:13 回复 查看 经验交流 社区交流
【经验分享帖】王正千分享实验经验二+1951317+19计科3班
分享到:

【实验四——文本识别 OCR-EAST

  1. 将算子的文件拷贝到相关文件夹中,进行算子编译。在编译中出现了错误:

    tensorflow/stream_executor/mlu/mlu_api/lib_ops/mlu_lib_ops.cc:1926:96: error: 'cnmlCreatePluginPowerDifferenceOp' was not declared in this scope

    经过思考后发现,这个错误应该是mlu_lib_ops.cc调用了PowerDifference算子,而cnplugin.h中没有PowerDifference算子的信息。所以我将实验一中PowerDifference算子的声明也添加到了cnplugin.h中,顺利解决了此问题。

  2. 集成到CNPlugin框架:补全plugin_sbc_op.cc文件。对于cnmlCreatePluginSBCOp函数,首先获得KernelParamsBuffer,然后根据算子的函数声明,将第一个参数标记为Input,将第二个参数标记为Output,然后传入第三个参数batch_num_。然后用cnmlCreatePluginOp创建算子。

  3.  集成到TensorFlow框架。将CNPluginlibcnplugin.so文件、cnplugin.h文件以及tf-SBC文件夹中的文件复制到TensorFlow的相关目录中,对TensorFlow进行编译即可。

  4. 提升运行速度。对块赋值可以直接赋值,而不是采用for循环,在使用这种方法的情况下,查看运行时间,然后把这些赋值的代码全部注释掉,再查看运行时间。经过比较得到结论:直接赋值的速度更快。

  5. 块的大小设置。由于图像数据的排列方式,means3个数字是交错的。而MLU处理连续的数据比较迅速,所以简单的对每个位置求余数,根据余数减去相应的值,耗时一定会比较长。所以需要在nram上构造一些数据块,以便进行整体的减法。

根据MLU的要求,块的大小需要是16的倍数;其次,为了让每次迭代,图像都减去相同的数据块,块大小需要是3的倍数;最后,在taskdim16的情况下,nram块的大小不能超过512。因此可以将块大小设置为384

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