【问题标题】:Is there support in cuda for a GPU kernel queue?cuda 是否支持 GPU 内核队列?
【发布时间】:2012-01-09 07:27:01
【问题描述】:

为了隐藏调用 cuda 内核的延迟,是否支持调用一系列内核而不必返回 CPU 调用下一个内核?因此,一系列内核可以在 GPU 设备上出列。在处理可能达到指令大小限制并希望创建更多模块化以减少整体指令大小的较大内核时,这似乎很重要。 (内联可能不是一个好的解决方案)

(如果它很重要,我正在使用 JCuda,如果这对实现此功能造成限制,请告诉我。)

【问题讨论】:

    标签: java queue cuda


    【解决方案1】:

    您指的是什么指令大小限制?我不知道。

    所有 CUDA 内核调用(>> 或 cuLaunch 等)都是异步的,这意味着控制权立即返回给 CPU。 CUDA 驱动程序将包括内核启动在内的硬件命令推送到硬件出列的命令队列中。因此,如果您在没有其他干预 CPU 工作或 CUDA 调用的情况下调用多个后续 CUDA 内核,它们将由 GPU 异步执行而不会“返回 CPU”,并且在 CUDA API 将命令排入队列后,控制权将立即返回给 CPU。

    有关详细信息,请参阅 CUDA 编程指南。

    【讨论】:

    • 是否保证内核将按顺序执行,或者如果它们不占用整个宽度,它们可能会并行运行?
    • @bmillare CUDA 内核在同一流上按顺序执行。如果您在启动时指定不同的流,那么这些内核可能会并行运行,前提是有足够的资源可以这样做
    • 并发内核执行需要 Compute Capability 2.0 或更高版本,此外还需要使用单独的 CUDA 流作为活动挂图提及。
    • 我认为他所指的指令限制是CUDA C编程指南附录F.1中提到的。在表 F.2 的最后一行中它说:“每个内核的最大指令数:200 万”
    • 啊,是的。 200 万条静态指令。你有接近的内核吗? :)
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2011-05-19
    • 2015-11-12
    • 2020-05-05
    • 2021-02-22
    • 2014-08-24
    • 2012-01-26
    相关资源
    最近更新 更多