10

我有一些基本算法(DCT/IDCT 和其他一些算法)在 Nexus 10 上移植和工作(至少在功能上符合预期)。由于这些算法是第一个实现,它们的执行时间目前正在运行到秒,这是可以理解的。

但是,考虑到 Renderscript 的架构,我发现这些算法可以在 CPU 或 GPU 上运行,具体取决于其他并行应用程序活动。例如,在我的应用程序中,有一个用于图像的滚动视图,并且该视图上的任何活动基本上都会将渲染脚本执行推送到 CPU。如果没有活动,则算法在 GPU 上运行。我通过 ARM-DS5 Mali/A15 跟踪看到了这一点。

这种情况本身就是调试/调整的噩梦,因为当算法在 CPU(双核)与 GPU(Mali)上运行时的性能增量约为 2 秒,因此很难衡量我的性能改进情况做我的算法代码。

有没有办法解决这个问题?一种可能的解决方案是至少有一个调试配置选项来选择渲染脚本代码的目标类型(ARM、GPU)?

4

1 回答 1

12
adb shell setprop debug.rs.default-CPU-driver 1

这将强制执行在参考 CPU 实现上运行。没有等价的东西可以将事情强制到 GPU,因为许多条件可能在运行时使这不可能。

同样有用的是:

adb shell setprop debug.rs.max-threads 1

这将要使用的 CPU 内核数限制为 1(或您设置为设备 CPU 计数的任何其他值)

于 2013-09-12T01:45:50.203 回答