首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gpu波的确切含义与线程块之间是否有关联?

gpu波的确切含义与线程块之间是否有关联?
EN

Stack Overflow用户
提问于 2022-03-15 08:47:53
回答 2查看 356关注 0票数 1

GPU内核执行的计算被划分为称为线程块的线程组,这些线程块通常在并发组中执行,从而导致执行的浪潮。

波在这里到底是什么意思?这不是和翘曲一样的意思吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-15 09:53:03

GPU可以执行最大数量的线程,分组为最大数量的线程块。当内核的整个网格大于这些限制的最大值时,或者如果存在并发内核占用GPU,它将启动尽可能多的线程块。当块的最后一个线程终止时,将启动一个新块。

由于块通常具有相同的运行时间,并且调度有一定的延迟,这通常会导致GPU上的活动突发,您可以在占用率中看到这些活动。我相信这就是那句话的意思。

不要混淆这与术语“波前”,这是AMD所谓的翘曲。

票数 2
EN

Stack Overflow用户

发布于 2022-06-07 09:50:34

  • Wave:一组并行运行在GPU上的线程块。
  • 全波:(设备上的短消息数量)x(每SM最大活动块)

使用小于全波的线程块启动网格会导致低achieved occupancy。发射主要由一定数量的全波和可能有1个不完全波组成。应该指出的是,波形的最大大小是基于每个线程的寄存器、每个块的共享内存等在一个SM上可以容纳多少块。

如果我们查看朱利安·德莫斯的博客,并使用这个值来理解这个问题:

  • 每SM的最大线程数: 2048 (NVIDIA Tesla K20)
  • 内核有4个块,每个SM有256个线程。
  • Theoretical Occupancy:%50 (4*256/2048)
  • Full Wave:(SMs的#)x(每个SM的最大活动块)= 13x4 =52个块

内核有128个模块,所以有2个全波和1个不完全波,24个模块。使用属性(launch_bounds)或配置每个SM共享内存量(关于某些设备,请参见相关报告),可以增加整个波形值。

另外,不完全波被称为partial last wave,它由于占用率低而对性能产生负面影响。GPU的这种未充分利用被命名为tail effect,它占主导地位,尤其是在网格中启动几个线程块时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71479296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档