专栏算法工具链x86 下和 板子端代码运行结果不一样.

x86 下和 板子端代码运行结果不一样.

已解决
海平面ovo2024-07-18
74
6

1. 芯片型号:xJ3

2. 天工开物开发包 OpenExplorer 版本:例如 J3

3. 问题定位:板端部署等

4. 问题具体描述:在使用网络进行推理时候, 在 docker 中使用 x86 编译程序一切正常, 但是在 上板子端编译时候,定位到问题出现在下面这句话上.

for (int i = 0; i input_count_; i++) {
if (hbDNNGetInputTensorProperties(&input_tensor[i].properties, dnn_handle_, i) != 0) {
std::cerr "hbDNNGetInputTensorProperties failed" std::endl;
return -1;

}


int input_memSize = input_tensor[i].properties.alignedByteSize
if (hbSysAllocCachedMem(&input_tensor[i].sysMem[0], input_memSize) != 0) {
std::cerr "hbSysAllocCachedMem failed" std::endl;
return -1;

}

定位问题在 input_memSize = 0 所以回报错, if (hbDNNGetInputTensorProperties(&input_tensor[i].properties, dnn_handle_, i) != 0) 这个里面, dnn_handle_ 句柄正常不为空,

现在不清楚 在板子端编译和 x86 的运行结果为什么不同,是编译的问题吗.


算法工具链
征程3
评论2
0/1000
  • Huanghui
    Lv.5

    确认一下下面的事情:

    1. 模型编译时链接的库是否做过升级,如果做过升级,请保证.h和.so同步被升级

    2. 你这个是模型推理前贮备阶段报的错,你先把OE中的hrt_model_exec安装到板端,保证板端的版本和OE中是一样的,然后在版本运行hrt_model_exec试试吧,这个工具是编译时静态链接的通过也会执行前期的准备工作,看看是否也有同样的错误。

    3. 如果hrt_model_exec没发现错误,那这个问题就是运行库版本或系统版本有问题造成的。对应修改就好了

    2024-07-18
    0
    4
    • 海平面ovo回复Huanghui:
      请问 模型推理前贮备阶段报的错 这个是什么意思
      2024-07-18
      0
    • Huanghui回复海平面ovo:
      这个是....笔误,应该是推理前准备阶段....
      2024-07-18
      0
    • 海平面ovo回复Huanghui:

      谢谢, 测试了 hrt_model_exec 没问题:现在有下述的错误

      2024-07-18
      0
    • 海平面ovo回复海平面ovo:

      问题已经解决,谢谢,在里面 自己编译的库 时候 需要 将厘米ldd 涉及的 ***.so 都移动到 本目录下,这个问题是,因为 ldd 在本目录下找不到库,找到了 别的路径下的 库 比如 libdnn.so lib_贝叶斯.so

      2024-07-19
      0
  • Huanghui
    Lv.5

    好的,问题解决了就好,这中推理不一致的问题,一般就是版本不一直或库有问题导致的!

    2024-07-23
    0
    0