Page 332 - 《软件学报》2021年第9期
P. 332
2956 Journal of Software 软件学报 Vol.32, No.9, September 2021
2.3.2 规则化
分子动力学模拟中,以硅结晶过程为例.问题本身不一定是规则的,但是可以以尽量规则化的方法进行计
算,在数据结构上尽量规则化.所谓规则化,就是按照向量长度是对齐,连续,大小规整 [20] .规整是按照硬件结构来
规整的,具体做法是:将数据结构规则化,向量宽度规则化.程序中的主要数据结构是存储例子位移、速度、加速
度等信息,有一些非规则的部分.由于神威芯片的核是向量化的、规则化的,即硬件是规则化的,我们在设计类型
和数据结构的时候,将数据规则存储.由于芯片的向量化、规则化,因而规则化数据结构以提升性能.本文考虑常
温下,晶体硅的模拟.硅晶体为规则的晶胞结构,有 4 个邻居粒子.受力计算中,需分别计算 4 个邻居粒子 b,c,d,e
与 a 粒子的距离,如图 22 所示.
(x a,y a,z a)
dist = ( a x − b x ) + 2 (y − a b y ) + 2 ( a z − b z 2 0 x + 2 0 y + 2 0 z 2
) =
(x b,y b,z b)
Fig.22 Distance between atoms
图 22 原子间的距离
4 次距离的计算是不凝聚的,我们针对神威核向量化的特点,考虑指令优化,进行规则化计算.三维距离是计
算两点间 3 个维度上的差的平方和再开方,即:
dist = (x − a x b ) + 2 (y − a y b ) + 2 (z − a z b ) 2 (11)
由硅粒子的规则晶胞结构可知,a 粒子的受力需计算 4 个邻居粒子与 a 粒子的距离.我们利用规则化的数据
结构,首先将粒子三维坐标的数据结构规则化.神威的并行 C 语言上扩展的数据类型为 doublev4,由 4 个双精度
浮点数构成.粒子坐标即定义为 doublev4 类型的数据结构,如 doublev4 a.s;表示 a 粒子的位置,它的 4 个浮点数
分别代表三维坐标和 0.规则化的数据结构去计算 a 与 b,c,d,e 之间距离时,每两点间需进行差平方后的求和操
作.如图 23 所示,a 与 b 间的距离首先需计算公式(12):
2
2
(x a −x b ) +(y a −y b ) +(z a −z b ) 2 (12)
2 2 2 2
(x a - x b) (x a - x c) (x a - x d) (x a - x e)
2 2 2 2
(y a - y b) (y a - y c) (y a - y d) (y a - y e)
2 2 2 2
(z a - z b) (z a - z c) (z a - z d) (z a - z e)
0 0 0 0
Fig.23 Vector representation of the distance between atoms
图 23 原子间的距离的向量表示
若顺序执行 4 次这样的求和指令,那么这 4 次计算是不凝聚的.考虑规则化计算,以提高访存凝聚性.规则化
计算的方式进行指令优化,通过一个求和指令,实现 4 次求和计算.规则化的向量化求和是计算 4 个向量之和,而
不是向量的 4 个分量之和.因而考虑将原始的 4 个向量进行转置,实现规则化计算.修改后的形式如图 24 所示.
2 2 2
(x a - x b) (y a - y b) (z a - z b) 0
2 2 2
(x a - x c) (y a - y c) (z a - z c) 0
2 2 2
(x a - x d) (y a - y d) (z a - z d) 0
2 2 2
(x a - x e) (y a - y e) (z a - z e) 0
Fig.24 Distance representation after transposition
图 24 转置后的距离表示