超级计算环境下的石油勘探数值模拟优化策略

2019-09-09 13:33司道军
数码世界 2019年6期
关键词:石油勘探超级计算机数值

司道军

摘要:石油勘探数据处理长期以来一直是超级计算机的重要应用领域。随着石油勘探从常规勘探走向非常规勘探,勘探数据规模从TB级跨越到PB级,石油勘探数值模拟的计算量越来越大,对超级计算机的依赖越来越高。本文主要探讨超级计算环境下优化石油勘探数值模拟的几种策略。

关键词:石油勘探数值模拟超级计算

引言

石油勘探目前的主要手段是通过在地表或者海上激发人工震源,震源产生的地震波向地下介质中传播,到地震波遇到地下构造时,会产生反射等波现象,当地震波再次到达地表时被检波器接收。由于勘探工区到几百甚至上千平方公里,数据量十分庞大。同时这些海量的地震数据必须借助超级计算机的强大算力,才能得到地下复杂构造的形态,进一步指导地质专家确定可能的油气富集区。

1并行计算优化策略

超级计算机是将几万甚至几十万个计算节点通过高速互联网络连接起来,而每个计算节点又通常包含几十个CPU计算核心,这些计算核心就是真正提供算力的计算单元。同时为了提高I/O效率,超级计算机往往采用功能强大的并行文件系统。目前依赖于底层的物理硬件,主要的并行优化策略包括MPI并行优化技术、多线程并行优化技术、指令集优化技术等。

2 MPI并行优化计算

MPI,全称为Message Passing Interface,即消息传递接口,它适用于分布式内存的计算机,而超级计算机大都是分布式内存架构的。它是在标准串行程序设计语言的基础上,通过加入一些消息传递的函数构建的并行编程模型。目前在超级计算机上运行的程序主要是MPI程序。它具有可移植性高、扩展性好等优点。MPI的程序设计以进程为独立的计算单位,计算任务根据物理问题被分解成不同的子任务分发到不同的进程上执行,进程间的数据传递通过MPI的消息传递函数实现。以石油勘探数值模拟为例,激发的人工震源往往是几千甚至上万炮。每一炮可以作为独立的子任务在不同的进程上执行。另一种划分方式是,将每一炮要进行数值模拟的数值模型划分为不同的区域,每个区域的计算任务在单独的进程上执行,根据划分的方式又可以分为一维划分,二维和三维MPI拓扑等方式。MPI并行方法的瓶颈在于处理进程间通信和数据I/O。针对通信问题,可以采用异步通信将计算和通信重叠,提高计算效率,针对I/O问题,可以采用MPI-IO替代串行10,充分利用超级计算机的并行文件系统的吞吐效率。采用一维方向数值模型剖分的MPI并行技术,我们实现了80%的并行效率,120CPU核心并行相比12CPU核心并行,MPI加速比达到8倍。如图l所示。

3多线程编程技术

MPI适用于分布式内存的并行计算机系统,而多线程模型适用于共享式内存的计算机系统。超级计算机计算节点之间是分布式内存,而节点内部的不同CPU核心是共享内存的形式,因此超级计算机并行优化技术既可以采用MPI并行技术,也可以采用多线程优化技术,常用的多线程编程模型有OpenMP、Pthreads等。下面以OpenMP为例阐述多线程优化技术。超级计算机每个节点内的核心共享主板上的内存,人们日常使用的多核心笔记本电脑、台式机、工作站也是这种结构,因此多线程优化技术也有广泛的适用性。相比MPI并行编程,程序员不必处理复杂的进程间的数据通信,对代码改动量较小,特别是OpenMP编程模型,程序员只需在计算量加大的for循环等部分加上一些指导语句即可。但是由于是共享内存,OpenMP等多线程优化技术需要小心处理线程间数据的共享和私有,避免数据竞争。通常一个优化的较好的多线程代码,只需少量的代码改动,数值计算的效率就可以实现近线性的加速效果。我们采用OpenMP并行编程技术,在12线程的情况下,取得了相比单线程10倍的加速比。如图2所示。

4指令集优化

我们都知道计算执行程序时是通过底层指令集对数据的操作实现的。计算机内有很多寄存器,通过单指令多数据(SIMD)操作,当需要多个数据执行相同的操作时,SIMD指令可以大大提供程序的执行效率。Intel等廠商提供了SSE、AVX等多种指令集,可以用来对程序进行指令集优化。相比前面提到的MPI并行编程和OpenMP多线程编程,指令集优化抑制性较差,依赖于具体的硬件,而且对程序员的要求较高,需要对代码做大量的改动工作。但是对于像傅里叶变换等用途较广的底层数学库,具有较高的价值。英特尔提供的MKL数据库就采用了指令集优化等手段。采用SSE等指令集对代码改写,我们取得了1.8倍的加速效率(理论上最高为4倍)。

5结束语

超级计算机节点之间为分布式内存结构,节点内为共享式内存结构,节点之间采用高速互联网络进行信息传递,这种复杂的系统结构可以综合采用指令集优化、多线程优化、MPI并行优化技术等,充分挖掘超级计算机的潜力。本文通过基本理论介绍和实际数据测试,阐述了如何利用超级计算机对石油勘探数值模拟进行优化。

参考文献

[1] Poyraz E,Xu H,Cui Y.Application-specific I/O optimizationson petascale supercomputers[J]. Procedia Computer Science, 2014,29: 910-923.

[2] Komatitsch D, Martin R. An unsplit convolutional perfectlymatched layer improved at grazing incidence for the seismic waveequation[J]. Geophysics, 2007, 72(5): SM155-SM167.

[3]Kjolstad F B,Snir M. Ghost cell pattern[C]//Proceedings of the2010 Workshop on Parallel Programming Patterns. ACM, 2010:4.

[4]莫则尧,袁国兴.消息传递并行编程环境MPI[M].科学出版社,2001.

猜你喜欢
石油勘探超级计算机数值
石油勘探开发中现代信息录井技术的运用探究
秦九韶与高次方程的数值解法
石油地质类型对石油勘探的影响及对策研究
英国
美国重登全球超算500强榜首
改进明托热机的数值模拟研究
改进明托热机的数值模拟研究
每秒100亿亿次 中国超级计算机
基于有限差分法的边坡治理数值分析
基于有限差分法的边坡治理数值分析