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

mah*_*ren 10 performance android renderscript

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

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

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

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

R. *_*ams 12

adb shell setprop debug.rs.default-CPU-driver 1
Run Code Online (Sandbox Code Playgroud)

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

同样有用的是:

adb shell setprop debug.rs.max-threads 1
Run Code Online (Sandbox Code Playgroud)

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