1

在渲染脚本中,我调用这样的内核

foo.forEach_bar(out_array);

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

in_array.copyFromUnchecked(array);

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

4

1 回答 1

0

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

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

您的“重叠”概念并不完全正确:由于分配存储在 RAM 内存中,因此它们不会去任何地方。这意味着另一个内核可以访问相同的内存分配,而无需将其内容转移到其他地方。

参考:RenderScript:Android 上的并行计算,最简单的方法

于 2016-07-31T10:23:53.247 回答