【问题标题】:Dynamic parallelism - passing contents of shared memory to spawned blocks?动态并行性 - 将共享内存的内容传递给生成的块?
【发布时间】:2017-02-16 18:38:32
【问题描述】:

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

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

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

【问题讨论】:

  • 一言以蔽之。
  • @talonmies:(低头)回答这个问题,所以我可以接受:-(

标签: cuda dynamic-parallelism gpu-shared-memory


【解决方案1】:

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

【讨论】:

  • 我想知道 - 你为什么将所有(?)你的答案都标记为“社区维基”?
  • 因为 (a) 我有太多的答案,我无法真正整理所有答案并将它们标记为社区 wiki 邀请任何人参与,保持答案正确和最新,以及 (b)我已经有足够的代表来获得网站上的所有特权,所以真的没有令人信服的理由需要赚取更多
  • 嗯。 (a) 无论如何,您都可以编辑任何人的帖子;您想在没有审查的情况下针对低声誉的编辑吗?这种编辑会发生吗? (b) 我知道您不需要更多的代表点数,但为什么要让您的答案“脱颖而出”作为社区 wiki 答案,以免获得积分?或者更确切地说,为什么要做任何事情来避免获得积分?并不是说它们是有害的;你可以忘记他们。
  • @einpoklum:坦率地说,你问了一个与你无关的问题,我回答了这个问题。如果您认为我将在 cmets 中与您就我选择使用 Stack Overflow 的优点进行辩论,那么您就大错特错了。如果您保留自己的意见,我将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 2013-01-11
  • 2014-09-16
相关资源
最近更新 更多