Toybrick

npu 模型推理时内存泄漏

我是大表书

注册会员

积分
198
楼主
发表于 2021-3-22 16:57:53    查看: 12337|回复: 1 | [复制链接]    打印 | 只看该作者
请问,我用Npu 模型推理时发生内存泄漏,内存泄露的的函数发生在rknn_run上,请问这是这个函数接口内部实现的问题么,还是我的代码问题,内存增加速度挺快的,一分钟差不多能加个1m

inputs[0].buf = rgbbuf;



ret = rknn_inputs_set(ctx, 1, inputs);
if(ret < 0)
{
  printf("rknn_input_set fail! ret=%d\n", ret);

}

ret = rknn_run(ctx, nullptr);
if(ret < 0)
{
  printf("rknn_run fail! ret=%d\n", ret);

}

outputs[0].want_float = true;
outputs[0].is_prealloc = false;
ret = rknn_outputs_get(ctx, 1, outputs, nullptr);
if(ret < 0)
{
  printf("rknn_outputs_get fail! ret=%d\n", ret);
}

// Process output
if(outputs[0].size == output0_attr.n_elems * sizeof(float))
{
  const size_t num_results = 1;
  const float threshold = 0.001f;

  std::vector<std::pair<float, int>> top_results;
  get_top_n<float>((float*)outputs[0].buf, output_elems, num_results, threshold, &top_results, true);

  std::vector<string> labels;
  size_t label_count;
  if (!ReadLabelsFile(lable_path, &labels, &label_count))
  {
   for (const auto& result : top_results)
   {
    const float confidence = result.first;
    const int index = result.second;
    centralStatus = result.second;
    //printf("%d\n", centralStatus);
    //std::cout << confidence << ": " << index << " " << labels[index] << "\n";
   }
  }
}
else
{
   printf("rknn_outputs_get fail! get output_size = [%d], but expect %u!\n",
   outputs[0].size, (uint32_t)(output0_attr.n_elems * sizeof(float)));
}

rknn_outputs_release(ctx, 1, outputs);


回复

使用道具 举报

jefferyzhang

版主

积分
13574
沙发
发表于 2021-3-22 17:36:16 | 只看该作者
目前没有收到反馈rknn有内存泄漏现象。如果是3399pro,npu是独立ddr,内存泄漏影响不到上位机。
你代码问题可能性比较大。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表