声子BTE应用的并行和优化研究
发布时间:2021-06-30 15:33
声子玻尔兹曼输运方程(BTE)可以有效地模拟介观尺度下的导热问题,相比于随机性方法,以有限体积法为代表的确定性方法求解声子BTE方程被认为更有希望解决工程实际问题。但是有限体积法求解BTE具有迭代步数多,迭代时间长的问题。为此提出了声子BTE方程迭代求解部分在GPU上的并行加速方案,并设计适当的线程分配方式及数据存储格式,采用循环展开和内核融合等优化手段对迭代过程进行并行加速。此外,采用基于角方向的并行策略,使用MPI+CUDA、CUDA-Aware MPI和NCCL函数的方式实现了声子BTE求解多GPU并行版本。实验结果表明,相较于Intel Xeon Gold 6248上的串行版本,在单块V100 GPU上获得了最大31.5倍的加速。同时使用NCCL函数的GPU并行版本在8台DGX-2节点共计128块V100 GPU上最高达到了83%的并行效率,比MPI+CUDA版本提升57%。
【文章来源】:计算机科学与探索. 2020,14(08)北大核心CSCD
【文章页数】:10 页
【部分图文】:
声子BTE非灰模型求解过程
声子BTE方程维度较高,迭代计算过程所需的数据,如能量密度值,除空间维度,还额外拥有声子模式以及角方向这两个维度。其中空间维度使用网格编号表示,因此数据一般存储在三维数组当中。由于GPU函数是以网格单元进行的CUDA线程分配,因此计算过程中相邻线程间访问的是数组中同一声子模式和角方向下,相邻网格单元间的数据。为了能够利用GPU合并访存特性,简化CPU、GPU端数据传输,数据采用如图2所示的一维数组进行存储。4.2 BiCGSTAB算法实现流程
ELL格式存储方式如图4所示,采用两个二维数组来存储一个n×k的矩阵(k为包含非零元素最多行的非零元素数目)。在实际使用中,使用两个一维向量按列方向对矩阵进行存储。使用ELL格式的SpMV算法在GPU内易于并行实现,计算过程中每个CUDA线程计算矩阵的一行,由ELL存储方式可知,CUDA线程对矩阵值以及列索引的访问均是连续的,能够充分利用GPU合并访存特性。图4 ELL稀疏矩阵存储格式
本文编号:3258011
【文章来源】:计算机科学与探索. 2020,14(08)北大核心CSCD
【文章页数】:10 页
【部分图文】:
声子BTE非灰模型求解过程
声子BTE方程维度较高,迭代计算过程所需的数据,如能量密度值,除空间维度,还额外拥有声子模式以及角方向这两个维度。其中空间维度使用网格编号表示,因此数据一般存储在三维数组当中。由于GPU函数是以网格单元进行的CUDA线程分配,因此计算过程中相邻线程间访问的是数组中同一声子模式和角方向下,相邻网格单元间的数据。为了能够利用GPU合并访存特性,简化CPU、GPU端数据传输,数据采用如图2所示的一维数组进行存储。4.2 BiCGSTAB算法实现流程
ELL格式存储方式如图4所示,采用两个二维数组来存储一个n×k的矩阵(k为包含非零元素最多行的非零元素数目)。在实际使用中,使用两个一维向量按列方向对矩阵进行存储。使用ELL格式的SpMV算法在GPU内易于并行实现,计算过程中每个CUDA线程计算矩阵的一行,由ELL存储方式可知,CUDA线程对矩阵值以及列索引的访问均是连续的,能够充分利用GPU合并访存特性。图4 ELL稀疏矩阵存储格式
本文编号:3258011
本文链接:https://www.wllwen.com/kejilunwen/wulilw/3258011.html