● shader灵活度测试:矩阵乘法
矩阵乘法是线性代数的基本构成之一,它是各种通用计算以及shader处理过程中非常常见的数学操作方式,矩阵乘法的过程可以将许多非常复杂的模型转换成相对简单的表现形式,因此被广泛应用在了光栅化(坐标变换)、光照(亮度直方操作)、阴影边缘平滑(针对像素块的切比雪夫不等式群)等几乎所有图形处理过程中。可以说只要进行图形处理过程,GPU就必定会进行大量的矩阵乘法操作。
矩阵乘法可以被解离成大量的存在一阶或者多阶弱关联度的行列式运算,并行化的处理这些行列式,同时为操作过程提供合理的缓冲空间来释放临时结果势必会极大地加快矩阵乘法操作的效率,进而加快整个图形过程的进度。因此,对于矩阵乘法效率的测试,不仅可以让我们获得构架并行度以及缓冲资源情况的信息,更能在趋势上反映GPU执行shader尤其是灵活shader的执行效率。所以,无论是之前已经进行过的HD7970/7950效能测试还是本次的GCN体系对比测试,我们都将矩阵乘法测试作为构架延展测试的第一个项目,通过它将Tahiti以及Pitcairn构架的ALU团簇部分剥离出来进行专门的性能测试。
矩阵乘法需要构架拥有良好的线程仲裁分配机制以及充足的缓冲体系,而这正是Tahiti构架与Pitcairn,甚至是Tahiti构架内部最核心的差异。Tahiti与Pitcairn同样拥有2组并行的ACE引擎,同样的2组ACE引擎在HD7970上需要应对32组CU共计2048个Vector ALU的需求,HD7950的运算单元规模比HD7970缩减了12.5%,所以同样的2组ACE引擎在一级线程队列仲裁及管理压力方面也要低于HD7970。HD7870及HD7850的ACE引擎与HD7900并无区别,但同样的2组ACE引擎在Pitcairn中只需要管理20/16组CU,合计1280/1024个Vector ALU。不难看出,HD7800的CU可以轻松的获得比HD7900更加充盈的线程块供给,这对于提升单元复用率有着极大的贡献。
测试结果支撑了我们的分析,尽管Pitcairn的运算规模只有Tahiti的62.5%,但HD7800却取得了超越HD7900的矩阵乘法性能,同时并完全没有表现出HD7900资源匮乏从而重度依赖驱动优化所导致的矩阵操作性能起伏问题。而在Tahiti构架内部,HD7950亦表现出了优于HD7970的性能增长趋势。