GPU内核执行的计算被划分为称为线程块的线程组,这些线程块通常在并发组中执行,从而导致执行的浪潮。
波在这里到底是什么意思?这不是和翘曲一样的意思吗?
发布于 2022-03-15 09:53:03
GPU可以执行最大数量的线程,分组为最大数量的线程块。当内核的整个网格大于这些限制的最大值时,或者如果存在并发内核占用GPU,它将启动尽可能多的线程块。当块的最后一个线程终止时,将启动一个新块。
由于块通常具有相同的运行时间,并且调度有一定的延迟,这通常会导致GPU上的活动突发,您可以在占用率中看到这些活动。我相信这就是那句话的意思。
不要混淆这与术语“波前”,这是AMD所谓的翘曲。
发布于 2022-06-07 09:50:34
使用小于全波的线程块启动网格会导致低achieved occupancy。发射主要由一定数量的全波和可能有1个不完全波组成。应该指出的是,波形的最大大小是基于每个线程的寄存器、每个块的共享内存等在一个SM上可以容纳多少块。
如果我们查看朱利安·德莫斯的博客,并使用这个值来理解这个问题:
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,它占主导地位,尤其是在网格中启动几个线程块时。
https://stackoverflow.com/questions/71479296
复制相似问题