我似乎找不到任何关于如何检查 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
Run Code Online (Sandbox Code Playgroud)
我尝试在 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
Run Code Online (Sandbox Code Playgroud)
这只会告诉您可以使用多少个 CPU。这不会表明正在使用多少个线程或哪个处理器。RS 通过设计避免暴露此信息
一般来说,RS 将使用所有可用的 CPU 内核,除非您调用“串行”函数,例如 rsg* 或时间函数。至于什么标准会导致脚本从 GPU 转移到 CPU,这将根据每个供应商 GPU 的能力而有所不同。
您提到的错误已在 4.1 中修复
归档时间: |
|
查看次数: |
1864 次 |
最近记录: |