是否有可能“延长”共享内存的生命?

时间:2013-10-04 21:55:49

标签: cuda gpgpu

我有一个内核,我使用一些共享内存。我将自动机复制到共享内存,执行一些模式匹配,获得一些结果并退出。

在退出此内核后,我调用同一个内核并将相同的自动机复制到共享内存,但现在将在模式匹配上测试的数据是其他内容。

我想知道我是否可以将此数据(自动机)放在共享内存中,这样我的程序就会更快,只是在第一次将自动机复制到共享内存。

我在想是否存在任何可以从设备调用的同步函数,告诉主机内核已经完成,所以我可以从头开始重新执行内核而不清除共享内存。

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:3)

我认为不可能。共享内存数据在逻辑上与特定线程块相关联,并与特定流式多处理器物理关联,但线程块与特定流式多处理器没有物理关联。

答案 1 :(得分:3)

甚至不可能为整个特定内核的执行保留共享内存。共享内存特定于线程块,您无法预测特定块何时开始和结束其执行。当然,您可以在内核执行之间将数据保存在全局内存中,这对于此应用程序来说可能很好。毕竟,无论如何,你将不得不从全局内存中加载新数据。