S100 OpenExplorer

# #常见问题

## #Latency、FPS数据是如何统计的？

Latency是指单流程推理模型所耗费的平均时间，重在表示在资源充足的情况下推理一帧的平均耗时，体现在上板运行是单核单线程统计；统计方法伪代码如下：

`// Load model and prepare input and output tensor ... // Loop run inference and get latency { int32_t const loop_num{1000}; start = std::chrono::steady_clock::now(); for(int32_t i = 0; i < loop_num; i++){ hbUCPSchedParam sched_param{}; HB_UCP_INITIALIZE_SCHED_PARAM(&sched_param); // create task hbDNNInferV2(&task_handle, output_tensor, input_tensor, dnn_handle); // submit task hbUCPSubmitTask(task_handle, &sched_param); // wait task done hbUCPWaitTaskDone(task_handle, 0); // release task handle hbUCPReleaseTask(task_handle); task_handle = nullptr; } end = std::chrono::steady_clock::now(); latency = (end - start) / loop_num; } // release tensor and model ...`

FPS是指多流程同时进行模型推理平均一秒推理的帧数，重在表示充分使用资源情况下模型的吞吐，体现在上板运行为单核多线程；统计方法是同时起多个线程进行模型推理，计算平均1s推理的总帧数。

## #通过Latency推算FPS与工具测出的FPS为什么不一致？

Latency与FPS的统计情景不同，Latency为单流程（单核单线程）推理，FPS为多流程（单核多线程）推理，因此推算不一致；若统计FPS时将流程（线程）数量设置为 `1` ，则通过Latency推算FPS和测出的一致。

## #Perf时出现内存不足如何处理？

当提示内存不足时，可以通过以下方式解决：

- 减少 `thread_num` 的值，以减少并行度，降低内存占用。

- 优化模型，减少模型的内存占用。

页面目录