【问题标题】:A single thread on CUDACUDA 上的单线程
【发布时间】:2016-02-27 21:52:45
【问题描述】:

我正在调用一个只有一个块且该块内只有一个线程的 CUDA 内核,例如

内核>>

这个内核是否只在指定的单个 CUDA 内核上执行? 那么例如,如果 GPU 有 128 个内核,那么 128 个内核中只有 1 个可以工作?

非常感谢!

【问题讨论】:

    标签: cuda


    【解决方案1】:

    没有。 CUDA 是一种 SIMD 风格的架构,基本执行单元是一个 warp——一组 32 个线程,它们在硬件上按锁步方式执行。如果启动包含单个线程的单个块,硬件将执行 32 个线程的单个 warp,其中 31 个被屏蔽并执行相当于 noops 流。任何给定的 warp 都在单个流式多处理器上执行,并且取决于您使用的硬件的代次,这可能涉及运行它的 SM 的 8、16 或 32 个内核。

    【讨论】:

      【解决方案2】:

      每个 CUDA 核心都是 SM 的 SIMD 中的一个通道。您的内核仅激活一个 SM 并使用其中一个通道。所以内核>> 效率很低,只利用一个SM 的一个通道。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        • 1970-01-01
        • 1970-01-01
        • 2012-04-09
        • 2012-07-19
        • 2012-05-13
        • 2010-12-11
        相关资源
        最近更新 更多