【问题标题】:Determining whether Renderscript is running on CPU/GPU & Number of Threads确定 Renderscript 是否在 CPU/GPU 和线程数上运行
【发布时间】:2013-02-27 06:28:56
【问题描述】:

我似乎找不到任何关于如何检查 RenderScript 是否真的在并行化代码的文档。我想知道是 CPU 还是 GPU 正在被使用以及调度的线程数。

我发现的唯一内容是这个错误报告: http://code.google.com/p/android/issues/detail?id=28662

作者提到将 rsForEach 放入脚本导致它通过指向以下调试输出被序列化:

01-02 00:21:59.960: D/RenderScript(1256): = 0  0x0
01-02 00:21:59.976: D/RenderScript(1256): = 1  0x1

我尝试在 LogCat 中搜索类似的字符串,但找不到匹配项。

有什么想法吗?

更新: 其实我好像想通了。看来我的 LogCat foo 并没有达到应有的水平。我通过我的应用程序信息过滤了调试输出,发现了这样一行:

02-26 22:30:05.657: V/RenderScript(26113): rsContextCreate dev=0x5cec0458
02-26 22:30:05.735: V/RenderScript(26113): 0x5d9f63b8 Launching thread(s), CPUs 2

【问题讨论】:

    标签: renderscript


    【解决方案1】:

    这只会告诉您可以使用多少 CPU。这不会指示有多少线程或正在使用哪个处理器。根据设计,RS 避免暴露这些信息

    通常,RS 将使用所有可用的 CPU 内核,除非您调用“串行”函数,例如 rsg* 或时间函数。至于什么标准会导致脚本从 GPU 推送到 CPU,这将取决于每个供应商 GPU 的能力。

    您引用的错误已在 4.1 中修复

    【讨论】:

      【解决方案2】:

      我在使用 RS 时遇到了同样的问题。我使用 Nexus 5 进行测试。我发现 RS 的初始启动使用 CPU 而不是使用 GPU,这是使用 Trepn 5.0s 应用程序验证的。后来我发现 Nexus-5 GPU 不支持双精度(Link to Adreno 330),所以默认将其移植到 CPU 上。为了克服这个问题,我在我的 rs 文件的顶部使用了 #pragma rs_fp_relaxed 以及标题声明。

      因此,如果您严格希望将其移植到 GPU 上,那么最好的方法是找出您的移动 GPU 规格并尝试上述技巧并使用 Trepn 5.0s 或等效应用程序测量 GPU 利用率。到目前为止,RS 没有公开线程级别的详细信息,但在实现过程中,我们可以利用根 - 内核的 x 和 y 参数作为线程索引。

      【讨论】:

      • 当 RS 开始在 GPU 上运行时,LogCat 输出是否有任何明显变化?我正在尝试使用 Mali GPU(Mali 似乎没有提供任何 GPU 分析工具,例如 Trepn,而且 Trepn 似乎无法识别 Mali GPU)并且无论我使用什么 rs_fp_xxx pragma,LogCat 输出都保持不变.我什至按照stackoverflow.com/questions/13917106/… 的建议尝试了FilterScripts,但无济于事。
      【解决方案3】:

      调试属性

      RenderScript 包括 debug.rs.default-CPU-driver 和 debug.rs.script 调试属性。

      debug.rs.default-CPU-driver

      值 = 0 或 1

      默认值 = 0

      如果设置为 1,RenderScript Compute 的 Android 开源项目 (AOSP) 实现 用来。这不使用任何 GPU 功能。

      debug.rs.script

      值 = 0 或 1

      默认值 = 0

      如果设置为 1,则在 logcat 中打印附加诊断信息。该信息包括 内核运行的实际设备,GPU 或应用处理器。 如果内核无法在 GPU 上运行,则会提供更详细的信息来解释原因。为了 例子: [RS-DIAG] GPU 上不支持递归调用

      Arm® Mali™ RenderScript Best Practices_pdf

      【讨论】:

      • 我尝试使用adb shell setprop debug.rs.script 1 启用输出调试输出,但运气不佳。有什么提示吗?
      猜你喜欢
      • 2017-09-02
      • 2021-03-11
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2018-12-10
      • 2013-09-16
      相关资源
      最近更新 更多