动态并行 - 将共享内存的内容传递给生成的块?

问题描述 投票:0回答:1

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

如果一个块发现它需要更多线程来完成其工作,它就会生成它们;它向其生成的线程传递“它所知道的内容”——本质上是其共享内存的内容,每个生成的线程块都会在其自己的共享内存中获得一个副本;线程使用它们的父线程“知道”的内容来找出它们需要继续做什么,然后去做。

但是,AFAICT 共享内存的这种“继承”并没有发生。全局内存(以及通过内核参数的常量内存)是“父”DP 内核块向其“子”块传递信息的唯一方法吗?

cuda dynamic-parallelism gpu-shared-memory
1个回答
3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.