首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SIMD-16和SIMD-32的优缺点?

SIMD-16和SIMD-32的优缺点?
EN

Stack Overflow用户
提问于 2019-08-17 08:08:52
回答 1查看 1.1K关注 0票数 2

因此,最近,AMD推出了他们的新GPU架构称为rDNA在他们的新的纳维GPU线。在阅读了某些建筑深潜文章视频之后,我的理解是(如果我错了,请随时纠正):

  • 需要执行类似指令的小型工作负载称为“线程”。
  • 然后,调度程序将需要相同指令的一组线程安排在一起。特别是在AMD情况下,GCN和rDNA分别被设计为处理64和32个线程。
  • 然后SIMD处理这些集群线程。但是不同的是,AMD使用SIMD16,这意味着16个线程可以一次处理,而AMD使用SIMD32,这意味着32个线程可以一次处理。
  • 如果GPU有所有的64个线程要执行,事情就应该完美无缺,但是如果它只需要执行一个线程的话,那就太麻烦了。因此,只有一个SIMD16向量单元实际上是在做一些有意义的事情,而其他三个基本只是令人毛骨悚然。
  • 架构的改变意味着,使用SIMD32,GPU可以消除潜在的瓶颈。

通常,所有这些源都在说“SIMD16设计更适合于计算工作量”。这使我产生了一些问题:

1) SIMD32的设计难道不是在SIMD16的各个方面都是全面的更好吗?如果没有,那么SIMD16在计算工作中究竟有什么优势呢?

( 2)对于每64个线程,4个SIMD16是同时进行还是串行处理?我问这个问题的原因--来自恩加德的视频描述为序列化的过程,而来自莱纳斯技术诀窍的视频似乎暗示它是并行的。这把我搞糊涂了。

  • 如果一切都是连续的,那么为什么AMD不只是追求SIMD64之类的呢?
  • 如果一切都是平行的,那么老实说,我根本看不到SIMD的优点。在GCN上,您有4 SIMD16,在rDNA上有2 SIMD32。如果使用SIMD16在GCN上处理1个线程,则运行1 SIMD16的时间应该等于运行4 SIMD16的时间,因为它们同样是并行的。跳转到2 SIMD32,您处理1 SIMD32的时间应该等于处理其中2 SIMD32的时间。在这两种情况下,您仍然可能有63个未使用的线程。那么有什么意义呢?

我知道我的理解在某一点上一定有缺陷,所以我想要一些深刻的解释。谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-22 01:42:16

只是长篇大论。

在gcn中,每4个矢量只有一个标量单位(16长)。而在rdna中,每一个载体有2个标量单位(32长)。对于给标量单元加压的复杂算法来说,这一定是一个严重的优势。那个标量单位是新的,不是吗?因此,它是一个很好的单线程问题解决方案,而不是期望开发人员提供完全优化的计算工作负载。现在的树遍历可以更好吗?

在gcn中,每个16宽向量在单个周期内发布,整个gcn在4个周期内发布。每64个管道4个周期。但在rdna中,它是每32条管道一个周期,所以它是平行的。这也意味着,对于一些延迟的problems.when 2单元来说,有很好的优势,因为它们是独立的两个32宽的向量,所以它仍然是每64个管道中有一个循环。

到目前为止,我们在“问题”性能上有4倍的噱头,在“标量”工作负载上有8倍的噱头。

进入线程级并行,它完成相同的波前比gcn更快,有或没有上述优点。这降低了寄存器的压力。较小的寄存器压力使更多的线程在飞行中有足够的空间。与gcn的256个线程相比,每向量1024个寄存器进一步提高了这一点。更多的线程每车道,更快的通道,更好的缓存系统等,它变得更快和有效。

架构的可伸缩性必须在32车道上停止,而不是以64、128等或更小的(如16、8、4 )为限。也许64宽矢量不能从缓存中获得足够的带宽?我不知道。但有晶体管的预算。你会在哪种作物,以获得更宽的simd?缓存意味着每个管道的缓存较少或较慢,缓存较少或较慢。我也不收标量单位。也许纹理单位和rops,但游戏玩家也会买。市场渗透。

它们似乎在线程级别的并行性上发挥得很好,并且可能不需要在同一个向量上添加更多的物理线程。两个向量上的80个波前(当它们一起工作时)对于tlp来说已经很棒了,这样,ilp上的问题就少了很多。在同一区域制作16或8个宽矢量将需要它们有160个线程在每条管道飞行。每条管道是否有160个独特的操作?我不知道。即使是80个独特的操作对我来说也太过分了。就像同时使用rdna的所有数学和记忆特性一样。只是猜一下。

现在,80个波前限制意味着如果存在ilp或其他问题,您可以尝试在算法中包含多达80x2560个工作项。也许在简单的算法(比如朴素的nbody )中不太有用,但是对于诸如混合精度的int浮点字符串,在同一个指令窗口中计算的所有内容都很有用。也许这就是他们说16宽更好的原因。

在gcn中,每个管道有多达40个线程在运行中。Nvidia甚至不像32或16。现在rdna中有80种,而且速度更快。绝对更好。但可能不是当你只有2560个粒子在nbody算法。由于这个原因,您要求的64+ simd宽度可以更好地用于更少的粒子(可能)。但是随着粒子的增加,更多的tlp看起来更好,因此,在相同的晶体管计数上,每个计算单元的宽度更小。

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

https://stackoverflow.com/questions/57534471

复制
相关文章

相似问题

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