我有几个basic算法(DCT/IDCT 和其他一些)在 Nexus 10 上移植并工作(至少在功能上符合预期)。由于这些算法是首次实现,因此它们的执行时间目前已达到几秒,这是可以理解的。
然而,考虑到 Renderscript 的架构,我发现这些算法在 CPU 或 GPU 上运行,具体取决于其他并行应用程序活动。例如,在我的应用程序中,有一个图像滚动视图,该视图上的任何活动实质上都会将渲染脚本执行推送到 CPU。如果没有活动,算法将在 GPU 上运行。我通过 ARM-DS5 Mali/A15 跟踪实时看到这一点。
这种情况本身就是调试/调整噩梦,因为算法在 CPU(双核)与 GPU(Mali)上运行时的性能增量约为 2 秒,因此很难衡量我所获得的性能改进在我的算法代码上做。
有办法解决这个问题吗?一种可能的解决方案是至少有一个调试可配置选项来选择渲染脚本代码的目标类型(ARM、GPU)?
adb shell setprop debug.rs.default-CPU-driver 1
这将强制执行在参考 CPU 实现上运行。没有相当于将事情强制到 GPU 的方法,因为许多条件可能导致运行时无法做到这一点。
同样有用的是:
adb shell setprop debug.rs.max-threads 1
这将要使用的 CPU 核心数量限制为 1(或您为设备的 CPU 数量设置的任何其他值)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)