【问题标题】:Parallelize a method from inside a CUDA device function / kernel从 CUDA 设备函数/内核中并行化方法
【发布时间】:2014-02-21 16:37:41
【问题描述】:

我有一个已经并行化的 CUDA 内核,它可以执行一些需要频繁插值的任务。

所以有一个内核

__global__ void complexStuff(...)

调用一次或多次此插补器函数:

__device__ void interpolate(...)

插值算法在三个维度上连续进行 WENO 插值。这是一个高度可并行化的任务,我迫切希望并行化!

很明显,内核complexStuff() 可以通过使用<<<...>>> 语法从主机代码调用它来轻松实现并行化。 complexStuff() 已经并行化也很重要。

但我不清楚如何从 CUDA 设备函数中并行化某些东西/创建新线程......这甚至可能吗?有人知道吗?

【问题讨论】:

    标签: c++ multithreading parallel-processing cuda dynamic-parallelism


    【解决方案1】:

    您可能需要考虑动态并行(一些资源hereherehere)以便从另一个 CUDA 内核中调用 CUDA 内核。它要求您的设备计算能力为 3.5 或更高。它带有许多可能会降低性能的限制和限制(在第三个链接中提到)。
    我的建议是首先考虑使用complexStuff(...) 工作量乘以interpolate(...) 工作量来调用您的CUDA 内核。换句话说,静态地猜测你需要做的最大并行细粒度 Jobs 是多少。然后配置您的内核以使用块线程执行那些细粒度的作业。请注意,这只是一个猜测,不知道您的程序代码。

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2023-04-06
      • 1970-01-01
      • 2015-09-28
      相关资源
      最近更新 更多