【问题标题】:task scheduling of NVIDIA GPUNVIDIA GPU的任务调度
【发布时间】:2017-05-25 09:14:58
【问题描述】:

我对nvidia GPU的任务调度有些疑惑。

(1) 如果块中的线程束(CTA)已经完成,但仍有其他线程在运行,这个线程会等待其他线程完成吗?换句话说,当所有线程都完成时,块(CTA)中的所有线程都会释放它们的资源,可以吗?我认为这点应该是对的,因为块中的线程共享共享内存和其他资源,这些资源在 CTA 大小管理器中分配。

(2) 如果一个块(CTA) 中的所有线程都因为一些长延迟(例如全局内存访问)而挂起?一个新的 CTA 线程会占用资源,哪种方法像 CPU?换句话说,如果一个块(CTA)已经被调度到一个 SM(流处理器),它是否会占用资源直到它完成?

如果有人向我推荐一些有关 GPU 架构的书籍或文章,我将不胜感激。谢谢!

【问题讨论】:

    标签: cuda gpu gpgpu


    【解决方案1】:

    只有当 SM 有足够的资源用于线程块(共享内存、warp、寄存器、屏障……)时,计算工作分配器才会在 SM 上调度线程块 (CTA)。分配诸如共享内存之类的线程块级资源。分配为线程块中的所有线程创建了足够的扭曲。资源管理器将warp 循环分配给SM 子分区。每个 SM 子分区都包含一个 warp 调度程序、寄存器文件和执行单元。一旦一个 warp 被分配给一个子分区,它将一直保留在子分区上,直到它完成或被上下文切换(Pascal 架构)抢占。在上下文切换恢复时,warp 将恢复到相同的 SM 相同的 warp-id。

    当warp中的所有线程都完成后,warp调度器等待warp发出的所有未完成的指令完成,然后资源管理器释放warp级别的资源,包括warp-id和寄存器文件。

    当一个线程块中的所有warp完成时,块级资源被释放,SM通知Compute Work Distributor该块已完成。

    一旦一个 warp 被分配给一个子分区并且所有的资源都被分配,这个 warp 被认为是活跃的,这意味着 warp 调度程序正在积极地跟踪这个 warp 的状态。在每个周期,warp 调度器确定哪些活动的 warp 被停止,哪些有资格发出指令。 warp 调度器选择最高优先级的合格 warp 并从 warp 发出 1-2 个连续指令。双重问题的规则特定于每个架构。如果 warp 发出内存加载,它可以继续执行独立指令,直到它到达依赖指令。然后,warp 将报告停止,直到加载完成。对于相关数学指令也是如此。 SM 架构旨在通过在 warp 之间切换每个周期来隐藏 ALU 和内存延迟。

    此答案未使用术语 CUDA 核心,因为这会引入不正确的心智模型。 CUDA 内核是流水线单精度浮点/整数执行单元。问题率和依赖延迟因每个架构而异。每个 SM 子分区和 SM 都有其他执行单元,包括加载/存储单元、双精度浮点单元、半精度浮点单元、分支单元等。

    【讨论】:

      【解决方案2】:

      我推荐this article。它有点过时了,但我认为这是一个很好的起点。这篇文章针对的是 Kepler 架构,所以最近的一篇 Pascal 可能在他们的行为上有一些差异。

      您的具体问题的答案(根据文章):

      第一季度。块中的线程是否只有在块中的所有线程都运行完后才释放其资源?

      是的。一个已完成运行的 warp,而同一块中的其他 warp 仍未获取其资源,例如寄存器和共享内存。

      第二季度。当一个block中的每个线程都挂了,还会占用资源吗?或者,是否有新的线程块接管资源?

      你在问一个块是否可以被抢占。我通过网络搜索并从here得到了答案。

      关于计算能力

      因此,块在因某些全局内存访问而停滞时不会放弃其资源。与其期望停滞的经线被抢占,您应该设计您的 CUDA 代码,以便在 SM 中驻留大量经线,等待调度。在这种情况下,即使某些 warp 正在等待全局内存访问完成,调度程序也可以启动其他线程,从而有效地隐藏延迟。

      【讨论】:

      • 是的,多个block可以在一个SM中并发运行。但是当一个block(一个SM上多个并发block中)的线程全部挂掉时,还会占用资源吗?
      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 2022-12-25
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      相关资源
      最近更新 更多