最好使用一个大内核或cuda流?

时间:2012-05-06 01:57:27

标签: cuda

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

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

与其他方式相比,单向有任何优势吗?

谢谢你们。

1 个答案:

答案 0 :(得分:3)

费米卡上内核的启动延迟大约为10us,所以无需担心。这是有意义的 - 在游戏中渲染场景,必须运行许多不同的着色器(它们是内核)。

内核必须读取它将从全局内存处理的数据,并将结果写回全局内存。因此每个独立的内核都意味着完整的读/写周期。如果你能够在一个大内核中将多个步骤链接在一起,你仍然可以加快速度,但仍然可以通过一个读/写周期进行括号。

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

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