gpt4 book ai didi

c - 有人知道 nvidia 产品(开普勒)中的 warp 退役机制吗?

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:05 25 4
gpt4 key购买 nike

我说的是具有计算能力 3.5 (GK110) 的 nvidia GPU:

在每个 GPU 核心上,最多有 64 个事件 warp,硬件如何处理 warp 退役?来自不同网格 block 甚至流的变形能否在 GPU 的单个核心上同时工作(我所说的核心是指多处理器,因为它们本质上是多核 GPU 的核心)?

核心能否从一个流中快速退出完成的 warp,并将其他流中的其他 warp 加载到同一核心?

我问这个的原因是因为要做出艰难的决定:

(1) 我可以编写代码来启动来自不同流的多个线程,大约 2/3 的启动线程束基本上什么都不做,并快速退休。

或者:

(2) 我可以编写代码来准确启动所需数量的线程,但每个线程都将包含非常繁重的索引计算(通过求解多个索引方程,计算正确索引所涉及的计算量将只是与 (1) 中的实际计算一样多(如果不是更多的话))。

因此,如果 GK110 可以快速退出空 warp 并用新的 warp 替换它们,那么 (1) 将优于 (2),因为它可以完全避免不必要的索引计算。

到目前为止,琐碎的案例测试表明这两个工作大致相同,但我不确定 (1) 在非琐碎的案例中是否会更好。

最佳答案

On each GPU core, there are at most 64 active warps. How does the hardware handle warp retirements? Can warps from different grid blocks or even streams work concurrently on a single core of a GPU (by core I mean multiprocessor, since they are estentially the core of a multi-core GPU)?

是的,来自不同线程 block 的 warp 可以共存并准备好在单个 SM 上执行。这些不同的线程 block 可能来自相同的内核或不同的内核,来自不同的流。描述了来自不同内核并发执行的线程 block here .

Can a core retire finished warps quickly from a stream and load other warps from maybe other stream to the same core?

是的。在分配 warp 之前,首先由 threadblock 处理工作分工。首先在 SM 上安排一个线程 block ,然后选择要执行的 warp 的过程发生。只要 SM 上有可用的线程 block 插槽(并且没有其他调度限制,例如共享内存或寄存器使用),来自任何可用内核的新线程 block 都可以在 cc 3.5 SM 上调度。

关于c - 有人知道 nvidia 产品(开普勒)中的 warp 退役机制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com