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

刘芳芳  等:国产异构系统上的 HPCG 并行算法及高效实现                                                  2349


                 6.3   其他优化
                    分块后,块内的数据存在可能的复用,本文可以通过 GPU 卡上的程序员可控高速缓存 LDS 来完成这部分的
                 复用,从而进一步提高访存的效率.
                    除此之外,本文还运用了多种优化手段,如分支消除、循环展开、数据预取、数据管理优化等.在分支消除
                 方面,考虑到 GPU 的分支执行特性,本文通过逻辑计算来消除了一些分支指令.在循环展开方面,综合考虑寄存
                 器的数量与性能,本文展开了一些热点函数中的循环.在数据预取方面,本文在计算时先统一预取不规则的内存
                 区域中的数据.数据管理方面,本文采用了内存池的方式对内存进行管理,避免了很多不必要的内存申请与释放,
                 并且在主存分配空间时都声明为 pinned memory 以加速数据拷贝.
                 7    多进程实现与优化

                    在多进程的实现中,本文采用了内外区划分的方式,将整个计算网格分成内区和外区两个部分,外区宽度为
                 1,如图 8 所示.将内区按照第 4 节中算法进行着色,将外区看成最后一个颜色.当内区部分所有的计算和外区所
                 需的 halo 区数据通信都完成后开始进行外区的计算.具体流程如图 12 所示.这样整个 HPCG 中核心函数 SpMV、
                 SymGS 中的邻居通信均可被内区计算掩盖,从而减少了整体运行时间.
                    由于矩阵、向量等常驻 GPU 设备内存,邻居通信前需要将 halo 区的数据先拷贝回 CPU 内存,待通信结束
                 后再拷贝到 GPU 内存.第 1 次拷贝是无法重叠的,因为只有等完全拷贝结束后才能进行邻居通信.











                                        Fig.12    Overlap of computation and communication
                                                    图 12   计算通信重叠

                 8    HPCG 测试结果

                    本文对第 3.1 节和第 3.2 节的算法均进行了实现,并基于某国产复杂异构超级计算机单节点单进程进行了
                 测试,测试结果如图 13 所示.图 13 中给出了 HPCG
                 参考版、两个并行方案的性能结果,对第 2 个方案,
                 还给出了多个优化技术所带来的性能提升.从图
                 中可以看出,第 3.2 节算法性能较高(见图中 para2),
                 约是第 3.1 节算法(见图中 para1)的 2 倍多,因为第
                 3.2 节算法能更好的发挥 GPU 的计算能力,并行度
                 更高.图中 opt1 是将 setup 部分和 OptimizeProblem
                 部分进行优化的结果,同时该版本还减少了不必
                 要的同步操作,opt2 是对多重网格中每一层的着
                 色方案进行自适应调整,以增加粗层的并行度,另
                 外该版本中还包括对零元访存的优化.opt2 版本
                 的性能是本文工作单节点可达到的最高性能,在
                                                              Fig.13    HPCG performance using single process
                 做完内外 区 划分后 , 该性 能有所下降 , 见图中
                                                                        图 13  HPCG 单进程性能
                 inner-outer 部分.
   62   63   64   65   66   67   68   69   70   71   72