先放一张图:

脉动阵列

脉动阵列(Systolic Array)是一种 2D 的结构,它的 MAC 单元排布成一个二维矩阵的结构,来有效地平衡计算于通信。

Tensor Core

Tensor Core 是一种 3D 结构,也就是说对于第 PE ,在其上发生的运算是 ,这样一个 cycle 就可以把矩阵乘法中所有的乘法都计算完,剩下的 reduction 操作,就看各个 PE 之间的联系了。这么看 Tensor Core 是一种更加符合 Enisum 抽象的硬件。示例如下:

所以 Tensor Core 应该是比脉动阵列要快的。

另外还有一个酷炫的动图,演示的是 tensor core 在处理比自己规模大的矩阵时是如何分片的,此外我们也可以看到 Pascal 架构的 Tensor Core 是无法一次性进行乘法运算的(可能其他 tensor core 也不行,只是时钟频率提高了看不出来):