文章信息
- 崔家武, 周波阳, 罗志才, 张兴福
- CUI Jiawu, ZHOU Boyang, LUO Zhicai, ZHANG Xingfu
- 利用MPI并行算法实现球谐综合的效率分析
- Efficiency Analysis of Spherical Harmonic Synthesis Based on MPI Parallel Algorithm
- 武汉大学学报·信息科学版, 2019, 44(12): 1802-1807
- Geomatics and Information Science of Wuhan University, 2019, 44(12): 1802-1807
- http://dx.doi.org/10.13203/j.whugis20180165
-
文章历史
收稿日期: 2018-09-11

2. 广州市城市规划勘测设计研究院, 广东 广州, 510060;
3. 华中科技大学物理学院, 湖北 武汉, 430074;
4. 华中科技大学地球物理研究所, 湖北 武汉, 430074
2. Guangzhou Urban Planning and Design Surrey Research Institute, Guangzhou, 510060, China;
3. School of Physics, Huazhong University of Science and Technology, Wuhan 430074, China;
4. Institute of Geophysics, Huazhong University of Science and Technology, Wuhan 430074, China
由地球重力场模型计算扰动位、重力异常、高程异常等重力场参量的方法称为球谐综合法。当采用高阶次地球重力场模型串行计算大规模格网时,球谐综合法的计算工作量大,耗时长。为加快数据处理速度,不少学者从算法上进行了优化,在一定程度上提高了计算效率[1-5]。并行计算是高性能计算领域使用最为广泛的一种技术[6],它的基本思想是采用多个处理器来协同求解同一个问题。利用并行计算技术突破大规模重力数据处理的瓶颈、提高计算效率已逐渐成为一项共识[7]。典型的并行编程环境主要有MPI(message passing interface)、OpenMP(open multi-processing)、HPF(high performance Fortran)、CUDA (compute unified device architecture)等[8-9],其中MPI、OpenMP是物理大地测量领域较为常用的两种并行模型[10-16]。
MPI、OpenMP分别为基于消息传递和共享内存的并行编程模型[17],其中OpenMP具有易编程、内存开销小等特点,但仅能在1个计算节点内并行;MPI采取分布式内存并行,计算作业可以在1个或者多个节点内并行,适用于个人计算机、服务器、计算机集群、超算等;而MPI具有移植性强、拓展性好、通信函数丰富等优点,是目前可信赖的高效率大规模并行计算平台[16, 18]。因此,本文将适用范围更广、并行潜能更大的MPI运用于大规模格网重力场参量的球谐综合计算中。
1 基本原理地球重力场一般可通过扰动重力场进行研究,地球外部任意一点的扰动位T的球谐级数可表示为:
| $ T\left( {r,\theta ,\lambda } \right) = \frac{{GM}}{r}{\left( {\frac{R}{r}} \right)^n}\sum\limits_{m = 0}^n {\left( {\bar C_{nm}^*\cos \left( {m\lambda } \right) + \bar S_{nm}^ * \sin \left( {m\lambda } \right)} \right)} {\bar P_{nm}}\left( {\cos \theta } \right) $ | (1) |
式中,
| $ \begin{array}{*{20}{l}} \begin{array}{l} {{\bar P}_{nm}}\left( {{\rm{cos}}\theta } \right) = {\alpha _{nm}}{{\bar P}_{n - 2, m}}\left( {{\rm{cos}}\theta } \right) + \\ \;\;\;\;\;\;{\beta _{nm}}{{\bar P}_{n - 2, m - 2}}\left( {{\rm{cos}}\theta } \right) - {\gamma _{nm}}{{\bar P}_{n, m - 2}}\left( {{\rm{cos}}\theta } \right), {\rm{}} \end{array}\\ {\;\;\;\;\;\;\forall n > m \ge 2} \end{array} $ | (2) |
式中, αnm、βnm、γnm为递推系数,具体计算公式参见文献[3]。
对式(1)中的扰动位T进行简单的数学变换可以得到重力异常、高程异常、垂线偏差等地球重力场参量。以重力异常Δg为例,将正常椭球面做球近似假设,则T与Δg之间的关系式可表示为:
| $ {\rm{\Delta }}g = - \frac{{\partial T}}{{\partial r}} - \frac{2}{R}T $ | (3) |
将式(1)代入式(3),可得到Δg的球谐展开式:
| $ \begin{array}{l} \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\Delta g\left( {r,\theta ,\lambda } \right) = \\ \frac{{GM}}{{{r^2}}}\sum\limits_{n = 2}^N {\left( {n - 1} \right)} {\left( {\frac{R}{r}} \right)^n}\sum\limits_{m = 0}^n {\left( {\bar C_{nm}^*\cos \left( {m\lambda } \right) + } \right.} \\ \;\;\;\;\;\;\;\;\;\;\;\;\left. {\bar S_{nm}^*\sin \left( {m\lambda } \right)} \right){{\bar P}_{nm}}\left( {\cos \theta } \right) \end{array} $ | (4) |
方案1 在球谐综合中,勒让德函数
方案2 由式(4)可知,cos(mλ)、sin (mλ)两项与经度相关。为提高计算效率,将cos(mλ)、sin(mλ)预先算好并存放到数组中,再通过调用的方式参与计算。此项措施联合方案1在本文中标记为方案2。
假定全球纬度带条数为M,经度带条数为2M,参考阶次取为N,则这两项的计算次数为
方案3 由文献[3]可知,缔合勒让德函数的3个系数αnm、βnm、γnm与经纬度无关,只与阶次相关。由于同一纬度所有阶次的
MPI可以通过分解任务实现多进程并行计算。由式(4)可知,在逐纬度计算时,纬度条带之间的计算是相互独立的,利用MPI将大规模格网重力异常按纬度条带分配给各个进程,在计算结束后收集各个进程的结果,避免了额外的通信开销。
在进行任务分解时有两种模式可选,一种是按纬度分块分解,即每一个进程负责处理一块连续的纬度带,如图 1所示。另一种是按纬度循环分解,以进程P0为例,假设进程个数为n,则进程P0负责计算的纬度带为W1,W1+n…W1+kn。在任务无法均等分配时,两种模式的进程任务量有所差异,但最高任务量相同。由于MPI的数据收集函数MPI_Gather()是按进程编号由小到大进行收集,即先将P0中的所有计算结果存放到一维数组中,然后逐个存放其他进程的数据,当采取按纬度分块分解模式时,收集到的结果可直接输出;而按纬度循环分解模式收集的结果需要进行复杂的顺序变换才可以输出,本文采取按纬度分块对任务进行分解。
|
| 图 1 纬度分块并行计算 Fig. 1 Parallel Computation of Latitude Blocks |
由于MPI采用分布式内存数据存储模式,随着进程数P增加,各项系数运算压缩比下降Z/P,内存耗用倍增,尤其是方案3耗用内存较多,在一定程度上会影响计算性能,为了获得最优方案组合,对方案1~3均进行并行分析。
4 算例与分析本实验采用EGM2008重力场模型,取至2 160阶次,并设置了两组算例。算例1计算了全球格网1°×1°的重力异常,算例2计算了跨纬度15°、跨经度360°的5'×5'格网的重力异常(即格网个数为180×4 320)。
本实验计算平台之一为广东工业大学3S技术实验室配置的DELL PowerEdge R730服务器,该服务器配置有2个物理中央处理器(central processing unit,CPU)(E5-2630L,主频1.80 GHz,每个CPU 8核,共16核),32个逻辑CPU,内存32 GB,内存频率2 133 MHz,搭载Red Hat Enterprise Linux server release 6.7操作系统。程序并行环境为MPI 3.0.4,编译器为GCC 4.4.7,编程语言为C++。
为评价并行算法和数组预存再调用方法对计算过程的优化作用,引入加速比SP:
| $ {S_P} = \frac{{T_1^S}}{{T_i^P}} $ | (5) |
式中,P(P≥1)表示进程个数;
按照上文3种方案,分别实现串行及并行运算。当进程个数相同时,3种方案的CPU使用率一致,皆为3.125P%(P为进程数,3.125P≤100,而3.125%实际上是1个逻辑CPU占总逻辑CPU个数(32)的百分比,这说明了逻辑CPU的启动个数与进程个数相等(在进程个数不超过逻辑CPU个数的情况下)。表 1为两个算例中3种方案对应进程数的内存耗用情况。由表 1可知,在内存充足的情况下,3种方案的内存耗用与进程数P存在良好的线性关系,算例1分别约为180P、193P、268P,算例2分别约为190P、332P、410P。在算例1中,当进程个数增加到180时,3种方案均遭遇内存不足(内存空间31 714 MB),硬盘交换空间分别为3 316 MB、10 010 MB、19 609 MB;在算例2中,方案3在开启90个进程时,硬盘交换空间为6 944 MB,在开启180个进程时,3种方案的硬盘交换空间分别为6 685 MB、29 297 MB、43 008 MB。
| 进程 | 算例1/MB | 算例2/MB | |||||
| 方案1 | 方案2 | 方案3 | 方案1 | 方案2 | 方案3 | ||
| 1 | 179 | 194 | 274 | 195 | 354 | 444 | |
| 10 | 1 796 | 1 894 | 2 680 | 2 077 | 3 504 | 4 291 | |
| 20 | 3 596 | 3 813 | 5 359 | 3 934 | 6 791 | 8 310 | |
| 30 | 5 396 | 5 735 | 8 033 | 5 791 | 10 074 | 12 361 | |
| 60 | 10 808 | 11 517 | 16 096 | 11 378 | 19 941 | 24 512 | |
| 90 | 16 253 | 17 332 | 24 159 | 16 973 | 29 826 | 38 658 | |
| 180 | 35 484 | 41 724 | 51 323 | 38 399 | 61 011 | 74 722 | |
表 2为算例1、算例2中3种方案串行及并行的运算时长。由表 2可知,在串行计算中,通过将系数预存调用的方式,可大幅度提高计算效率,方案2、3相对方案1在算例1中的加速比分别为1.58、1.70,在算例2中分别为1.44、1.47。并行计算中,3种方案均在进程数为30时获得最短计算时长,在算例1中由19 260 s分别减少至1 169 s、1 024 s、978 s,最大加速比分别为16.48、18.81、19.69;在算例2中由274 533 s分别减少至14 226 s、12 695 s、12 402 s,最大加速比分别为19.30、21.63、22.14。
| 进程 | 算例1/s | 算例2/s | |||||
| 方案1 | 方案2 | 方案3 | 方案1 | 方案2 | 方案3 | ||
| 1 | 19 260 | 12 162 | 11 311 | 274 533 | 190 403 | 186 479 | |
| 10 | 2 455 | 1 698 | 1 492 | 39 819 | 33 592 | 21 298 | |
| 20 | 1 677 | 1 368 | 1 239 | 20 677 | 16 852 | 15 697 | |
| 30 | 1 169 | 1 024 | 978 | 14 226 | 12 695 | 12 402 | |
| 60 | 1 189 | 1 103 | 980 | 15 047 | 14 186 | 14 363 | |
| 90 | 1 202 | 1 091 | 1 115 | 15 010 | 16 826 | 15 942 | |
| 180 | 1 535 | 1 773 | 2 788 | 15 817 | 19 569 | 20 440 | |
为了直观地比较3种方案的并行性能,图 2展示了3种方案的并行加速比。由图 2可知,在算例1和算例2中,各方案的加速比在进程数为30时达到峰值。随着进程数进一步增加,加速比开始缓慢下降,原因在于实验服务器共拥有32个逻辑CPU,而每个逻辑CPU同一时刻只能运行1个进程,当进程个数超出逻辑CPU的个数时,进程之间会出现替换使用逻辑CPU的情况,此时继续增加进程并不能进一步缩短计算耗时;相反,计算资源的过度分散将会降低计算性能。另外,进程数越多,并行的开销时间也越多,反而会拖慢计算速度,因此并行进程的最优个数为逻辑CPU的个数。
|
| 图 2 服务器上不同方案串行及并行的加速比 Fig. 2 Serial and Parallel Speedup Ratios of Different Schemes on the Server |
由图 2可知,整体上方案3的加速比优于方案2,方案1最差。但当进程数增加到90或180以后,方案1的加速比优于方案2和方案3,其原因一是方案2和方案3的预存系数运算压缩比随着进程数增加而减小(每个进程需要对方案2或方案3所述的预存系数进行独立预存);二是结合表 1可知,当进程数增加到90或180后,方案2、方案3面临内存严重不足问题,进程部分内存被释放到swap分区中,频繁的页面调度和交换增加了磁盘负载,大大降低了计算效率,而方案1的swap分区交换内存相对于方案2、方案3则要小得多,故其加速比、相对效率反而优于方案2、方案3。
为进一步验证上述结论,本文也在中山大学超算平台“天河二号”上进行了实验。“天河二号”每个节点配置两颗主频为2.2 GHz的Intel Xeon E5-2692 V2系列CPU,共24核,48个逻辑CPU,内存为128 GB,内存频率为1 333 MHz,并配有3个Xeon Phi 57核心的协处理器(运算加速卡)。程序并行环境为MPI 3.1,编译器为GCC 4.4.7,编程语言为C++。值得注意的是,“天河二号”可以根据进程个数动态分配节点,并始终满足分配的逻辑CPU个数大于等于进程个数。
由表 3可知,由于“天河二号”节点的计算资源充足,在两个算例中,3种方案的计算耗时均随着进程数的增加一直减少。图 3中算例1中3种方案之间的差距很小,方案2、方案3略优于方案1;算例2中方案1则明显要优于方案2和方案3,其加速比约为方案2和方案3的两倍。这是由于“天河二号”每一节点的计算速度快(达422.4 Gflops),并且配有运算加速卡,其运算的瓶颈并不在于CPU,因此通过预存数组(即减少CPU运算工作量)所减少的计算耗时很小;相反,随着格网分辨率的提高,预存数组急剧增大,庞大的数组无法在高速缓存器中完全驻留,CPU在调用数组时需要频繁访问内存。
| 进程 | 算例1/s | 算例2/s | |||||
| 方案1 | 方案2 | 方案3 | 方案1 | 方案2 | 方案3 | ||
| 1 | 2 035 | 2 014 | 1 964 | 24 408 | 52 328 | 52 371 | |
| 10 | 247 | 242 | 242 | 2 875 | 6 278 | 6 171 | |
| 20 | 134 | 127 | 125 | 1 457 | 3 124 | 3 123 | |
| 30 | 92 | 86 | 86 | 982 | 2 090 | 2 090 | |
| 60 | 49 | 46 | 46 | 512 | 1 058 | 1 063 | |
| 90 | 35 | 33 | 33 | 347 | 716 | 714 | |
| 180 | 21 | 20 | 20 | 186 | 403 | 412 | |
|
| 图 3 超算平台上不同方案串行及并行的加速比 Fig. 3 Serial and Parallel Speedup Ratios of Different Schemes on the Supercomputer |
由上文可知,“天河二号”内存频率与CPU主频的比值为0.606。因此在算例2中,其访问内存增加的时间要远多于CPU减少的时间;而在DELL服务器上,内存频率与CPU主频的比值为1.185。两个算例中预存数组在DELL服务器上均取得了良好效果。
5 结语本文以2 160阶次的EGM2008模型为例,基于MPI实现了按纬度带分解并行计算格网重力异常,通过对MPI并行、MPI结合数组预存调用等方案的运行效率进行分析比较,得出如下结论。
相比串行计算,MPI并行计算能充分利用多核计算机资源,大幅度缩短计算时长;增加进程数可以进一步分解计算任务量,但由于1个逻辑CPU同一时刻只能运行1个进程,当进程个数超出逻辑CPU个数时,各进程需要替换使用逻辑CPU,故在此基础上继续增加进程已失去意义,相反,进程数越多,并行的开销时间也越多,反而会增加整体计算耗时。因此建议开启的进程个数取为逻辑CPU的个数。此外,应尽量避免内存耗用超出计算平台内存。
对cos(mλ)、sin (mλ)以及缔合勒让德函数系数αnm、βnm、γnm采取数组预存调用的方式可有效减少CPU的运算工作量,但会增加内存的访问次数,建议在CPU性能一般而内存性能相对较好的计算平台上采用,CPU与内存的性能衡量可参照文中的两个计算平台。
本文中提出的数组预存调用方式以及逐纬度分块并行计算模式适用于采用球谐综合法计算扰动位、重力扰动、垂线偏差、高程异常、大地水准面高等重力场参量。
| [1] |
Luo Zhicai, Ning Jinsheng, Chao Dingbo. Spherical Harmonic Synthesis on Satellite Gravity Gradient Component[J]. Journal of Wuhan Technical University of Surveying and Mapping, 1996, 21(2): 103-108. (罗志才, 宁津生, 晁定波. 卫星重力梯度分量的球谐综合[J]. 武汉测绘科技大学学报, 1996, 21(2): 103-108. ) |
| [2] |
Wu Xing, Zhang Chuanding, Zhao Dejun, et al. Improvements on the Computation of Fixed Integral of Generalized Spherical Harmonics[J]. Journal of Institute of Surveying and Mapping, 2005, 22(1): 17-20. (吴星, 张传定, 赵德军, 等. 广义球谐函数定积分计算方法的改进[J]. 测绘学院学报, 2005, 22(1): 17-20. DOI:10.3969/j.issn.1673-6338.2005.01.006 ) |
| [3] |
Wang Jianqiang, Zhao Guoqiang, Zhu Guangbin. Contrastive Analysis of Common Computing Methods of Ultra-high Degree and Order Fully Normalized Associated Legendre Function[J]. Journal of Geodesy and Geodynamics, 2009, 29(2): 126-130. (王建强, 赵国强, 朱广彬. 常用超高阶次缔合勒让德函数计算方法对比分析[J]. 大地测量与地球动力学, 2009, 29(2): 126-130. ) |
| [4] |
Li Xinxing. Building of an Ultra-High-Degree Geopotential Model[D]. Zhengzhou: Information Engineering University, 2013 (李新星.超高阶地球重力场模型的构建[D].郑州: 信息工程大学, 2013) http://cdmd.cnki.com.cn/Article/CDMD-90005-1013353698.htm
|
| [5] |
Wang Jianqiang, Li Jiancheng, Wang Zhengtao, et al. Pole Transform of Spherical Harmonic Function to Quickly Calculate Gravity the Disturbance on Earth-Orbiting Satellites[J]. Geomatics and Information Science of Wuhan University, 2013, 38(9): 1 039-1 043. (王建强, 李建成, 王正涛, 等. 球谐函数变换快速计算扰动引力[J]. 武汉大学学报·信息科学版, 2013, 38(9): 1 039-1 043. ) |
| [6] |
Dongarra J, Fox G, Kennedy K, et al. Sourcebook of Parallel Computing[M]//Mo Zeyao, Chen Jun, Cao Xiaolin. Beijing: Publishing House of Electronics Industry, 2005 (多加拉J, 福克斯G, 肯尼迪K, 等.并行计算综论[M].莫则尧, 陈军, 曹小林.北京: 电子工业出版社, 2005)
|
| [7] |
Zou Xiancai, Li Jiancheng, Wang Haihong, et al. Application of Parallel Computing with OpenMP in Data Processing for Satellite Gravity[J]. Acta Geodaetica et Cartographica Sinica, 2010, 39(6): 636-641. (邹贤才, 李建成, 汪海洪, 等. OpenMP并行计算在卫星重力数据处理中的应用[J]. 测绘学报, 2010, 39(6): 636-641. ) |
| [8] |
Bakhtin V A, Kryukov V A, Chetverushkin B N, et al. Extension of the DVM Parallel Programming Model for Clusters with Heterogeneous Nodes[J]. Doklady Mathematics, 2012, 84(3): 879-881. |
| [9] |
Mo Zeyao, Yuan Guoxing. Message Passing Interface MPI Parallel Programming Environment[M]. Beijing: Science Press, 2006. (莫则尧, 袁国兴. 消息传递并行编程环境MPI[M]. 北京: 科学出版社, 2006. )
|
| [10] |
Baboulin M. Solving Large Dense Linear Least Squares Problems on Parallel Distributed Computers. Application to the Earth's Gravity Field Computation[D]. Toulouse: Centre Européen de Recherche et Formation Avancées en Calcul Scientifique, 2006
|
| [11] |
Zhou Hao, Zhong Bo, Luo Zhicai, et al. Application of Parallel Algorithms Based on OpenMP to Satellite Gravity Field Recovery[J]. Journal of Geodesy and Geodynamics, 2011, 31(5): 123-127. (周浩, 钟波, 罗志才, 等. OpenMP并行算法在卫星重力场模型反演中的应用[J]. 大地测量与地球动力学, 2011, 31(5): 123-127. ) |
| [12] |
Zhou Hao, Luo Zhicai, Zhong Bo, et al. MPI Parallel Algorithm in Satellite Gravity Field Model Inversion on the Basis of Least Square Method[J]. Acta Geodaetica et Cartographica Sinica, 2015, 44(8): 833-839, 857. (周浩, 罗志才, 钟波, 等. 利用最小二乘直接法反演卫星重力场模型的MPI并行算法[J]. 测绘学报, 2015, 44(8): 833-839, 857. ) |
| [13] |
Chen Qiujie, Shen Yunzhong, Zhang Xingfu. Analysis of Efficiency of Applying MKL and Open MP Polynuclear Parallel Algorithms to Recovery of High Degree Earth's Gravity Field[J]. Journal of Geodesy and Geodynamics, 2012, 32(5): 118-123. (陈秋杰, 沈云中, 张兴福. MKL和OpenMP多核并行算法解算高阶地球重力场的效率分析[J]. 大地测量与地球动力学, 2012, 32(5): 118-123. ) |
| [14] |
Nie Linjuan, Shen Wenbin, Wang Zhengtao, et al. Applications of Parallel Solutions Technology in Satellite Gravity Measurement[J]. Journal of Geodesy and Geodynamics, 2012, 32(2): 64-68, 73. (聂琳娟, 申文斌, 王正涛, 等. 基于超级计算机平台的并行解技术在卫星重力测量中的应用[J]. 大地测量与地球动力学, 2012, 32(2): 64-68, 73. ) |
| [15] |
Wu Y, Zhou H, Zhong B, et al. Regional Gravity Field Recovery Using the GOCE Gravity Gradient Tensor and Heterogeneous Gravimetry and Altimetry Data[J]. Journal of Geophysical Research: Solid Earth, 2017, 122(8): 6 928-6 952. DOI:10.1002/2017JB014196 |
| [16] |
Geist G A, Kohl J A, Papadopoulos P M. PVM and MPI: A Comparison of Features[J]. Calculateurs Paralleles, 1996, 8(2): 137-150. |
| [17] |
Qi Kunlun, Chen Yumin, Wu Huayi, et al. Parallel Processing in Eigenfunction-based Spatial Filtering Using MPI+OpenMP Hybrid Parallelization[J]. Geomatics and Information Science of Wuhan University, 2013, 38(6): 742-745. (祁昆仑, 陈玉敏, 吴华意, 等. MPI+OpenMP环境下的特征函数空间滤值并行化方法研究[J]. 武汉大学学报·信息科学版, 2013, 38(6): 742-745. ) |
| [18] |
Du C, Sun X H S. MPI-Mitten: Enabling Migration Technology in MPI[C]. IEEE International Symposium on Cluster Computing and the Grid, Singapore, 2006 https://ieeexplore.ieee.org/document/1630790
|
| [19] |
Liu Zuanwu, Zhang Jingwei, Liu Shihan, et al. The Computation of Associated Legendre Functions and Truncation Errors of Spherical Harmonic Series[J]. Hydrographic Surveying and Charting, 2012, 32(3): 1-4. (刘缵武, 张敬伟, 刘世晗, 等. 缔和勒让德函数的计算和球谐级数的截断误差分析[J]. 海洋测绘, 2012, 32(3): 1-4. DOI:10.3969/j.issn.1671-3044.2012.03.001 ) |
| [20] |
Wu Xing, Liu Yanyu. Comparison of Computing Methods of the Ultra High Degree and Order[J]. Journal of Zhengzhou Institute of Surveying and Mapping, 2006, 23(3): 188-191. (吴星, 刘雁雨. 多种超高阶次缔合勒让德函数计算方法的比较[J]. 测绘科学技术学报, 2006, 23(3): 188-191. DOI:10.3969/j.issn.1673-6338.2006.03.010 ) |
2019, Vol. 44


