渲染脚本中的重叠计算和通信

Overlapping Computation and Communication in renderscript

在 renderscript 中我这样调用内核

foo.forEach_bar(out_array);

并将参数传递给分配如下:

in_array.copyFromUnchecked(array);

我正在开发一个调用多个不同内核的程序。是否可以将内核的数据传输与先前内核的计算重叠? (即,当 GPU 在前一个内核上工作时,我们设法为下一个内核传输数据)

当您在分配上使用内核时,您可以只使用一个内核的输出分配作为另一个内核的输入分配。

当您顺序调用多个内核时,您不必担心它们 "overlapping" 因为它们不是 "real" 异步性。它们将一个接一个地执行,因此您可以重复使用以前的分配(例如,您用作内核的输出)作为新内核的输入。

您对 "overlapping" 的概念并不完全正确:由于分配存储在 RAM 内存中,因此它们不会离开那里。这意味着另一个内核可以访问相同的内存分配,而无需将其内容传输到其他地方。

参考:RenderScript: parallel computing on Android, the easy way