【发布时间】:2017-04-15 08:28:36
【问题描述】:
我是 GPGPU 和 CUDA 的新手。根据我的阅读,在当前一代的 CUDA GPU 上,线程被捆绑成 32 个线程的扭曲。 warp 中的所有线程都执行相同的指令,因此如果分支中存在分歧,则所有线程基本上花费的时间与采用所有发生的分支相对应。然而,似乎在 GPU 上同时执行的不同 warp 可以有不同的分支而没有此成本,因为不同的 warp 是由不同的计算资源执行的。所以我的问题是,在分歧不会导致这种惩罚的情况下,可以执行多少并发扭曲......即我应该在规格表中寻找多少数量。与此处相关的是“着色器处理器”的数量还是“流式多处理器”的数量?
另外,AMD Radeon 也有同样的问题:这里的相关术语可能是“统一着色器”和“计算单元”。
最后,假设我的工作负载在线程之间存在很大差异,所以我基本上只希望每个 warp 有一个线程。本质上将 GPU 用作普通的多核 CPU。这有可能吗?我应该如何布置线程和线程块才能发生这种情况?我可以避免为warp中的31个冗余线程分配内存等吗?我意识到这可能不是 GPGPU 的理想工作负载,但它可以用于在后台运行活动而不会阻塞主机 CPU。
【问题讨论】:
标签: gpgpu