司道軍


摘要:石油勘探數據處理長期以來一直是超級計算機的重要應用領域。隨著石油勘探從常規勘探走向非常規勘探,勘探數據規模從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.