5

知道Renderscript 的设计是为了掩盖我正在运行的处理器的事实,但是有没有办法编写代码,以便在支持 GPU 计算的设备(目前是 Nexus 10)运行显卡?有什么方法可以判断脚本的功能正在 GPU 上运行吗?

www.leapconf.com/downloads/LihuaZhang-MulticoreWare.pdf 建议如果我不使用全局变量,我不使用递归,并且不要在内核中的任何地方调用rsDebug,它将在GPU上运行;那是对的吗?

我希望看到人们以某种​​方式验证过的简短脚本将作为纯粹基于计算的任务在 gpu 上运行(例如,没有图形工作)。

4

1 回答 1

2

一般来说,关于 Nexus 10 行为的那些说法是正确的。关于调用某些 RS 运行时函数(例如,不要调用 rsGetAllocation)还有一些其他的事情会导致 CPU 运行函数。但是,我认为不是分配或绑定指针的全局变量在 4.2 中是可以的。

展望未来,许多限制将被放宽(全局是最大的限制)。

就查看内核运行的位置而言:4.2 版您无能为力。我们还没有看到这样做的令人信服的理由,但如果这真的很重要,我们可以通过 systrace 之类的东西毫不费力地添加一些东西。如果您能证明为什么除了“我认为代码将在 GPU 上运行得更快”之外,这会伤害您,请随时向我们投诉。

我很确定 ImageProcessing (fw/base/tests/RenderScriptTests/ImageProcessing/) 中的 Mandelbrot 实现在 4.2 的 GPU 上运行。

于 2013-06-18T17:28:36.103 回答