Parallel processing SIMD-16和SIMD-32的优势/劣势?
因此,最近,AMD在其新的Navi GPU系列中推出了名为rDNA的新GPU体系结构。在阅读了某些和之后,我的理解是(如果我错了,请随意更正):Parallel processing SIMD-16和SIMD-32的优势/劣势?,parallel-processing,gpu,cpu-architecture,simd,amd-gcn,Parallel Processing,Gpu,Cpu Architecture,Simd,Amd Gcn,因此,最近,AMD在其新的Navi GPU系列中推出了名为rDNA的新GPU体系结构。在阅读了某些和之后,我的理解是(如果我错了,请随意更正): 需要类似指令才能执行的小工作负载称为“线程” 然后,调度程序将一组需要相同指令的线程安排在一起。特别是在AMD GPU的情况下,GCN和rDNA被设计为分别处理64和32个线程 然后,SIMD处理这些集群线程。但区别在于AMD GCN使用SIMD16,这意味着16个线程可以一次处理,而AMD rDNA使用SIMD32,这意味着32个线程可以一次处理
- 需要类似指令才能执行的小工作负载称为“线程”
- 然后,调度程序将一组需要相同指令的线程安排在一起。特别是在AMD GPU的情况下,GCN和rDNA被设计为分别处理64和32个线程
- 然后,SIMD处理这些集群线程。但区别在于AMD GCN使用SIMD16,这意味着16个线程可以一次处理,而AMD rDNA使用SIMD32,这意味着32个线程可以一次处理
- 如果GPU有全部64个线程要执行,那么事情应该是完美的,但是如果它只需要执行一个线程,那将是一件痛苦的事情。因此,只有一个SIMD16向量单元实际上在做一些有成效的事情,而其他三个基本上是令人不寒而栗的
- 架构的变化意味着,使用SIMD32,GPU可以消除潜在的瓶颈
- 如果一切都是串行的,那么为什么AMD不选择SIMD64或其他产品呢
- 如果一切都是平行的,那么老实说,我根本看不到SIMD的优势。在GCN上有4个SIMD16,在rDNA上有2个SIMD32。如果使用SIMD16在GCN上处理1个线程,则运行1个SIMD16的时间应等于运行4个SIMD16的时间,因为它们也是并行的。跳转到2 SIMD32,处理1 SIMD32的时间应等于处理其中2个SIMD32的时间。在这两种情况下,您仍然可能有63个未使用的线程。那么重点是什么呢
在gcn中,在飞行中,每条管道最多有40个线程。英伟达甚至不像32岁或16岁。现在rdna中有80个,速度更快。绝对更好。但当nbody算法中只有2560个粒子时,情况可能并非如此。由于这个原因,您要求的64+simd宽度对于粒子数较少(可能)可能会更好。但随着粒子数的增加,tlp越大,效果越好,因此,在相同晶体管数下,每个计算单元的宽度越小 我认为更好的解释是“SIMD32需要32个“线程”组成的组在lockstep中同时做相同的事情”,而SIMD16允许将工作分配到内核的粒度更细,或者“分支”,我不做很多GPU的事情,所以我可能会误解。