bmodel与tpu.mlir对比不过(3)

Viewed 58

pp_yolov3模型在编译f16时遇到如下比对错误
image.png

1 Answers

定位过程:

  1. 由于本次已经问题确定与global pooling提交有关,故先检查了提交相关的代码,发现buffer_size分配没考虑n维,但本次出错n=1,与次无关;
  2. 使用bmodel与tpu.mlir对比不过(2)方法,确定本次出次错与local layer有关,并将模型截断到能够复现错误的程度。image.png
  3. 由于继续向前截断模型,倒数第二个group的timestep发生了变化,并且编译成功,怀疑可能是踩内存的问题,故直接修改final.mlir文件,将倒数第二个timestep的3个输出作为最终输出,发现将%81输出比对有错image.png
  4. 通过flow修改%81输出操作所在的timestep,发现只是提前一个timestep便可以比对通过,而原本所在timestep只有一个ActiveOp,这时又发现该ActiveOp的buffer_addr=0,和%81在localmem中的位置相同,怀疑该active需要imm buffer,但没有分配image.png
  5. 具体查看该active即hsigmoid后端,发现的确需要imm buffer,问题确定,在mlir分配imm buffer后,编译成功