Page 17 - 《软件学报》2021年第8期
P. 17

蔡雨  等:异构 HPL 算法中 CPU 端高性能 BLAS 库优化                                              2299


                 进行多线程并行的控制,甚至是多个维度同时并行.这种统一结构的便利性的代价就是在所有能够发生并行的
                 地方设置同步屏障(barrier),以便在当前 loop 的下层所有操作全部返回后才能继续回溯.虽然文献[7]中的性能
                 测试结果表明 control-tree 结构的开销是非常小的,但在异构 HPL 环境中,control-tree 的开销变得尤为突出.BLIS
                 原生 control-tree 的结构大致如图 7 所示.




































                                            Fig.7    Original BLIS GEMM control-tree
                                              图 7   BLIS 原生 GEMM control-tree

                    对于异构 HPL 中的 GEMM 运算,我们选择只在 loop3 处(M c 维度)实现并行,当各个线程的 A c  packing 打包
                 操作和后续操作都完成后,需要在 loop3 的 I c  barrier 处进行第 1 次同步,随后的 P c  barrier 和 global barrier 处再
                 次进行同步,才可以保证最终 GEMM 运算的正确性.可以看到,P c  barrier 和 global barrier 的同步开销其实是可以
                 避免的,只需将 loop3 放到算法的最前端,然后使用 OpenMP 自身的同步操作实现各个线程的同步即可.基于此
                 分析,对 GEMM 运算的 control-tree 结构做出了如图 8 所示的调整.
                    通过异构 HPL 的实际测试,未优化 control-tree 时 DGEMM 和 DTRSM 运算的同步 barrier 等待的时间开销
                 为 2.29s,约占 CPU 端计算总时间的 20%.优化 control-tree 结构后,GEMM 函数同步 barrier 的等待时间减少为
                 1.49s,TRSM 运算应用类似于优化思路,同步 barrier 的等待时间减少到基本可以忽略不计.
   12   13   14   15   16   17   18   19   20   21   22