板端使用问题
在板上运行网络模型输出数据怎么和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
参看以下解释
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可同时使用)