3

什么是更好的?我需要分几个步骤处理数据,在我看来我有 2 个选项:1)使用一个大内核 2)每个步骤使用带有一个内核的流

在执行内核之前会有一些延迟,但在这种情况下真的很重要吗?大内核的延迟与几个较小内核的延迟总和相同吗?

与另一种方式相比,一种方式有什么优势吗?

多谢你们。

4

1 回答 1

3

Fermi 卡上内核的启动延迟大约为 10us,因此无需担心。这是有道理的——要在游戏中渲染场景,必须运行许多不同的着色器(它们是内核)。

内核必须从全局内存中读取将要处理的数据,并将结果写回全局内存。因此,每个单独的内核都意味着完整的读/写周期。如果您能够在一个大内核中将多个步骤链接在一起,那么您可能能够加快速度,仍然由单个读/写周期括起来。

例如,如果您需要执行操作 A、B 和 C,链接它们可能会给您 READ - A - B - C - WRITE,而单独的内核会给您 READ - A - WRITE - READ - B - WRITE - READ - C - 写。

请记住,即使您运行单个内核,您仍然可以通过将单独的步骤分解为单独的设备功能来保持代码的可读性。

于 2012-05-06T02:59:49.297 回答