gpt4 book ai didi

android - 高通 SNPE 阻止 UI 线程

转载 作者:搜寻专家 更新时间:2023-11-01 09:27:59 29 4
gpt4 key购买 nike

使用 Qualcomm NeturalNetwork SDK。我可以运行 SNPE SDK 示例并更改为 inception_v3 模型,工作正常。

但是snpe会在execute()中阻塞ui线程;

我没有办法阻止它。 android 用户将获得糟糕的用户体验。

我尝试过:低优先级线程、作业调度器等

当我用 GPU 执行 snpe 时,它​​总是阻塞 UI。

如何配置SNPE,Android UI是高优先级,SNPE是低优先级,所以我们可以快速得到结果而不阻塞UI

谢谢。

最佳答案

GPU 上的批量操作会阻塞新帧的渲染。这个问题很难解决,它实际上与 SNPE 无关,因为我们可以使用非 SNPE 实现(内部基于 OpenCL 的框架)重现这个问题。您可以简单地更改张量操作的位置来缓解此问题。例如,您可以在 CPU 上进行计算(例如:tensorflow mobile),并且 UI 可以正确呈现,同时速度要慢得多并且 CPU 饥饿。

可以通过设备上的开发人员选项可视化我的解释。如需更多信息,请点击此链接:https://developer.android.com/studio/profile/inspect-gpu-rendering#profile_rendering .您将能够看到几个“交换缓冲区”1操作可能需要异常长的间隔。

最好的解决方案是在具有量化网络的DSP上进行计算,但是在可用的算子和内存上有很多限制。

Android 8.1 有可能通过 NN-API 抽象和 GPU 资源的操作系统级调度来解决这些问题,但我对 Google 的期望不高。

顺便说一句:我有一个假设的方案,可以通过分散批量操作来缓解这个问题。理论上,如果工作线程在低于 50 毫秒的操作之间休眠 20 毫秒,以便 UI 线程可以正确呈现,那么用户体验应该是可以接受的,因为 FPS 可以保持在 15 以上。我们将尝试这个方案,因为这个有障碍的方案应该仍然比基于 CPU 的方案快得多。

关于android - 高通 SNPE 阻止 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49398221/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com