司道軍
摘要:石油勘探數(shù)據(jù)處理長(zhǎng)期以來(lái)一直是超級(jí)計(jì)算機(jī)的重要應(yīng)用領(lǐng)域。隨著石油勘探從常規(guī)勘探走向非常規(guī)勘探,勘探數(shù)據(jù)規(guī)模從TB級(jí)跨越到PB級(jí),石油勘探數(shù)值模擬的計(jì)算量越來(lái)越大,對(duì)超級(jí)計(jì)算機(jī)的依賴(lài)越來(lái)越高。本文主要探討超級(jí)計(jì)算環(huán)境下優(yōu)化石油勘探數(shù)值模擬的幾種策略。
關(guān)鍵詞:石油勘探數(shù)值模擬超級(jí)計(jì)算
引言
石油勘探目前的主要手段是通過(guò)在地表或者海上激發(fā)人工震源,震源產(chǎn)生的地震波向地下介質(zhì)中傳播,到地震波遇到地下構(gòu)造時(shí),會(huì)產(chǎn)生反射等波現(xiàn)象,當(dāng)?shù)卣鸩ㄔ俅蔚竭_(dá)地表時(shí)被檢波器接收。由于勘探工區(qū)到幾百甚至上千平方公里,數(shù)據(jù)量十分龐大。同時(shí)這些海量的地震數(shù)據(jù)必須借助超級(jí)計(jì)算機(jī)的強(qiáng)大算力,才能得到地下復(fù)雜構(gòu)造的形態(tài),進(jìn)一步指導(dǎo)地質(zhì)專(zhuān)家確定可能的油氣富集區(qū)。
1并行計(jì)算優(yōu)化策略
超級(jí)計(jì)算機(jī)是將幾萬(wàn)甚至幾十萬(wàn)個(gè)計(jì)算節(jié)點(diǎn)通過(guò)高速互聯(lián)網(wǎng)絡(luò)連接起來(lái),而每個(gè)計(jì)算節(jié)點(diǎn)又通常包含幾十個(gè)CPU計(jì)算核心,這些計(jì)算核心就是真正提供算力的計(jì)算單元。同時(shí)為了提高I/O效率,超級(jí)計(jì)算機(jī)往往采用功能強(qiáng)大的并行文件系統(tǒng)。目前依賴(lài)于底層的物理硬件,主要的并行優(yōu)化策略包括MPI并行優(yōu)化技術(shù)、多線程并行優(yōu)化技術(shù)、指令集優(yōu)化技術(shù)等。
2 MPI并行優(yōu)化計(jì)算
MPI,全稱(chēng)為Message Passing Interface,即消息傳遞接口,它適用于分布式內(nèi)存的計(jì)算機(jī),而超級(jí)計(jì)算機(jī)大都是分布式內(nèi)存架構(gòu)的。它是在標(biāo)準(zhǔn)串行程序設(shè)計(jì)語(yǔ)言的基礎(chǔ)上,通過(guò)加入一些消息傳遞的函數(shù)構(gòu)建的并行編程模型。目前在超級(jí)計(jì)算機(jī)上運(yùn)行的程序主要是MPI程序。它具有可移植性高、擴(kuò)展性好等優(yōu)點(diǎn)。MPI的程序設(shè)計(jì)以進(jìn)程為獨(dú)立的計(jì)算單位,計(jì)算任務(wù)根據(jù)物理問(wèn)題被分解成不同的子任務(wù)分發(fā)到不同的進(jìn)程上執(zhí)行,進(jìn)程間的數(shù)據(jù)傳遞通過(guò)MPI的消息傳遞函數(shù)實(shí)現(xiàn)。以石油勘探數(shù)值模擬為例,激發(fā)的人工震源往往是幾千甚至上萬(wàn)炮。每一炮可以作為獨(dú)立的子任務(wù)在不同的進(jìn)程上執(zhí)行。另一種劃分方式是,將每一炮要進(jìn)行數(shù)值模擬的數(shù)值模型劃分為不同的區(qū)域,每個(gè)區(qū)域的計(jì)算任務(wù)在單獨(dú)的進(jìn)程上執(zhí)行,根據(jù)劃分的方式又可以分為一維劃分,二維和三維MPI拓?fù)涞确绞?。MPI并行方法的瓶頸在于處理進(jìn)程間通信和數(shù)據(jù)I/O。針對(duì)通信問(wèn)題,可以采用異步通信將計(jì)算和通信重疊,提高計(jì)算效率,針對(duì)I/O問(wèn)題,可以采用MPI-IO替代串行10,充分利用超級(jí)計(jì)算機(jī)的并行文件系統(tǒng)的吞吐效率。采用一維方向數(shù)值模型剖分的MPI并行技術(shù),我們實(shí)現(xiàn)了80%的并行效率,120CPU核心并行相比12CPU核心并行,MPI加速比達(dá)到8倍。如圖l所示。
3多線程編程技術(shù)
MPI適用于分布式內(nèi)存的并行計(jì)算機(jī)系統(tǒng),而多線程模型適用于共享式內(nèi)存的計(jì)算機(jī)系統(tǒng)。超級(jí)計(jì)算機(jī)計(jì)算節(jié)點(diǎn)之間是分布式內(nèi)存,而節(jié)點(diǎn)內(nèi)部的不同CPU核心是共享內(nèi)存的形式,因此超級(jí)計(jì)算機(jī)并行優(yōu)化技術(shù)既可以采用MPI并行技術(shù),也可以采用多線程優(yōu)化技術(shù),常用的多線程編程模型有OpenMP、Pthreads等。下面以O(shè)penMP為例闡述多線程優(yōu)化技術(shù)。超級(jí)計(jì)算機(jī)每個(gè)節(jié)點(diǎn)內(nèi)的核心共享主板上的內(nèi)存,人們?nèi)粘J褂玫亩嗪诵墓P記本電腦、臺(tái)式機(jī)、工作站也是這種結(jié)構(gòu),因此多線程優(yōu)化技術(shù)也有廣泛的適用性。相比MPI并行編程,程序員不必處理復(fù)雜的進(jìn)程間的數(shù)據(jù)通信,對(duì)代碼改動(dòng)量較小,特別是OpenMP編程模型,程序員只需在計(jì)算量加大的for循環(huán)等部分加上一些指導(dǎo)語(yǔ)句即可。但是由于是共享內(nèi)存,OpenMP等多線程優(yōu)化技術(shù)需要小心處理線程間數(shù)據(jù)的共享和私有,避免數(shù)據(jù)競(jìng)爭(zhēng)。通常一個(gè)優(yōu)化的較好的多線程代碼,只需少量的代碼改動(dòng),數(shù)值計(jì)算的效率就可以實(shí)現(xiàn)近線性的加速效果。我們采用OpenMP并行編程技術(shù),在12線程的情況下,取得了相比單線程10倍的加速比。如圖2所示。
4指令集優(yōu)化
我們都知道計(jì)算執(zhí)行程序時(shí)是通過(guò)底層指令集對(duì)數(shù)據(jù)的操作實(shí)現(xiàn)的。計(jì)算機(jī)內(nèi)有很多寄存器,通過(guò)單指令多數(shù)據(jù)(SIMD)操作,當(dāng)需要多個(gè)數(shù)據(jù)執(zhí)行相同的操作時(shí),SIMD指令可以大大提供程序的執(zhí)行效率。Intel等廠商提供了SSE、AVX等多種指令集,可以用來(lái)對(duì)程序進(jìn)行指令集優(yōu)化。相比前面提到的MPI并行編程和OpenMP多線程編程,指令集優(yōu)化抑制性較差,依賴(lài)于具體的硬件,而且對(duì)程序員的要求較高,需要對(duì)代碼做大量的改動(dòng)工作。但是對(duì)于像傅里葉變換等用途較廣的底層數(shù)學(xué)庫(kù),具有較高的價(jià)值。英特爾提供的MKL數(shù)據(jù)庫(kù)就采用了指令集優(yōu)化等手段。采用SSE等指令集對(duì)代碼改寫(xiě),我們?nèi)〉昧?.8倍的加速效率(理論上最高為4倍)。
5結(jié)束語(yǔ)
超級(jí)計(jì)算機(jī)節(jié)點(diǎn)之間為分布式內(nèi)存結(jié)構(gòu),節(jié)點(diǎn)內(nèi)為共享式內(nèi)存結(jié)構(gòu),節(jié)點(diǎn)之間采用高速互聯(lián)網(wǎng)絡(luò)進(jìn)行信息傳遞,這種復(fù)雜的系統(tǒng)結(jié)構(gòu)可以綜合采用指令集優(yōu)化、多線程優(yōu)化、MPI并行優(yōu)化技術(shù)等,充分挖掘超級(jí)計(jì)算機(jī)的潛力。本文通過(guò)基本理論介紹和實(shí)際數(shù)據(jù)測(cè)試,闡述了如何利用超級(jí)計(jì)算機(jī)對(duì)石油勘探數(shù)值模擬進(jìn)行優(yōu)化。
參考文獻(xiàn)
[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]莫?jiǎng)t堯,袁國(guó)興.消息傳遞并行編程環(huán)境MPI[M].科學(xué)出版社,2001.