0

虽然我已经编写了一段时间的 CUDA 内核,但我还没有使用动态并行 (DP)。我遇到了一项我认为可能适合的任务;但是,我希望能够使用 DP 的方式是:

如果 block 发现它需要更多线程来完成它的工作,它就会产生它们;它将“它所知道的”传递给它的衍生线程——本质上,它的共享内存的内容,每个衍生线程块在其自己的共享内存中获得一份副本;线程使用它们的父线程“知道”的东西来确定他们需要继续做什么,然后去做。

但是,AFAICT 不会发生这种共享内存的“继承”。全局内存(和通过内核参数的常量内存)是“父”DP内核块可以将信息传递给其“子”块的唯一方式吗?

4

1 回答 1

3

没有您设想的那种机制。父线程不能与通过动态并行启动的子内核共享其本地内存或块的共享内存。当父线程需要将瞬态数据传递给子内核时,唯一的选择是使用全局或动态分配的堆内存。

于 2017-02-16T10:38:32.787 回答