板端使用问题

在板上运行网络模型输出数据怎么和PC上不一样?

首先需要明确一点Fixed和Offline模型在PC上和板上运行时,给定相同的输入,输出的有效数据一定是一样的。使用以下方法,可以验证: 在PC上仿真,使用simulator.py运行Fixed或Offline模型时加上参数--dump_rawdata,运行结束后会在当前路径下保存一个图片名+ .bin的文件。该文件是在PC上做过前处理的输入数据,以二进制文件形式保存下来。在板端读取该文件,将该文件内所有数据memcpy到模型的输入Tensor,然后执行MI_IPU_Invoke。得到的输出和在PC上应该是完全一致的。

在板上输出浮点数全部是IPU完成的吗?

IPU可以通过增加Fix2float算子完成int16乘scale到float32数据的转换。只需网络转换时input_config.ini中dequantizations设为TRUE,在转到Fixed模型后会在模型对应的输出增加Fix2float算子。

运行时,模型占用的内存如何查看?

cat /proc/mi_modules/mi_sys_mma/mma_heap_name0参看以下解释

box_process

ipu_variable:推理过程中ipu核临时使用的内存

ipu_log:存储log使用的内存

ipu_chn0_networ:channel 0装载网络模型使用的内存

ipu_chn0_input_:channel 0 输入tensor占用的内存(多个则代表有多个输入tensor可同时使用)

ipu_chn0_output:channel 0输出tensor占用的内存(多个则代表有多个输出tensor可同时使用)