强制Renderscript在CPU或GPU上运行(Atleast用于性能调整目的)

时间:2013-09-12 01:31:20

标签: android performance renderscript

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

但是,考虑到Renderscript的体系结构,我发现这些算法可以在CPU或GPU上运行,具体取决于其他并行应用程序活动。例如,在我的应用程序中,有一个用于图像的滚动视图和该视图上的任何活动,实质上是将renderscript执行推送到CPU。如果没有活动,算法将在GPU上运行。我通过ARM-DS5 Mali / A15跟踪看到这个。

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

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

1 个答案:

答案 0 :(得分:11)

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

这将强制执行在参考CPU实现上运行。没有相同的东西可以强制GPU,因为许多条件可能会在运行时使其无法实现。

同样有用的是:

adb shell setprop debug.rs.max-threads 1

将CPU核心数量限制为1(或者设置为设备CPU数量的任何其他值)