地震資料處理系統(tǒng)控制流程設(shè)計及代碼的自動生成
第一章 緒論
在石油勘探領(lǐng)域中,隨著勘探設(shè)備領(lǐng)域的不斷進步,陸地到海洋的勘探力度都在逐步的增強,地震數(shù)據(jù)的獲取也走上了高效率、高精度和數(shù)據(jù)量巨大的道路[1],高密度數(shù)據(jù)采集方向的發(fā)展,導(dǎo)致地震資料處理的數(shù)據(jù)量日益增大,高效的地震數(shù)據(jù)處理逐漸成為地震資料處理的核心問題。而隨著計算機硬件技術(shù)的不斷升級,基于高性能計算集群的分布式并行計算,成為解決這一問題的關(guān)鍵技術(shù)。軟件開發(fā)人員通過研究包括海量數(shù)據(jù)的分割或分組方式、分布存儲調(diào)度、分布訪問調(diào)度以及相應(yīng)的數(shù)據(jù)塊接口和進程間通信等算法[2][3]來提升地震資料處理系統(tǒng)中對數(shù)據(jù)的處理速度。由于地震資料處理系統(tǒng)中大量分布式、并行計算的引入,加上模塊算法、工作流程的多樣性,導(dǎo)致了開發(fā)程序類型多樣,行為錯綜復(fù)雜,多進程、線程等控制流程容易出錯,甚至影響整個程序開發(fā)的效率。因此,從軟件開發(fā)人員的角度出發(fā),對地震資料處理系統(tǒng)開發(fā)過程中,方便的描述分布式并行計算的控制流程,并且可對整個流程的代碼進行自動生成的算法的研究很有必要。
1.1 研究背景及意義
近年來,在油氣勘探領(lǐng)域中,隨著地震資料采集技術(shù)的不斷發(fā)展,對地震數(shù)據(jù)的精確性、分辨率等質(zhì)量的要求也在逐步增強,地震儀的使用規(guī)模由從前的千道提升至現(xiàn)在的萬道,并開始向百萬道的規(guī)模前進,在這同時為了進一步提高采集到的地震資料的分辨率和精度,勘探開發(fā)過程中逐漸采用單點采集技術(shù),該技術(shù)使得采集到的地震資料數(shù)據(jù)量快速增長[4][5]。地震資料采集設(shè)備的逐步發(fā)展和采集技術(shù)的不斷成熟,使以后在地震勘探中獲取到的數(shù)據(jù)量將不斷變大甚至按照指數(shù)增加,然而,海量地震資料的處理和分析,為了保證處理的速度和精準(zhǔn)性,將極大限度的依賴于高性能硬件計算設(shè)備和相應(yīng)的高效的應(yīng)用軟件發(fā)展,地震數(shù)據(jù)量的巨大使得地震數(shù)據(jù)處理平臺中的大規(guī)模數(shù)據(jù)存儲、訪問及高性能計算面臨著巨大的考驗[6][7]。 為了保證軟件的處理和分析效率能夠滿足數(shù)據(jù)發(fā)展的要求,基于大型高性能計算集群[8]的高效的分布式、并行計算成為軟件開發(fā)者關(guān)注的關(guān)鍵。隨之而來的是大量的分布式、并行計算被引入到地震資料處理系統(tǒng)中。在密集型計算的需求下,分布式并行計算必將成為計算機的發(fā)展趨勢。在各種體系結(jié)構(gòu)中,集群更是以其廉價、可擴展性而被廣泛使用。在復(fù)雜地理計算支撐平臺與開發(fā)工具方面,要充分發(fā)揮多核處理器與并行集群的性能,將分布式和并行計算任務(wù)、計算模型、計算數(shù)據(jù)協(xié)調(diào)地劃分到不同的處理器與集群節(jié)點,同時對并行的需求也越來越高,復(fù)雜的并行需求導(dǎo)致控制流程的設(shè)計和開發(fā)過程變得繁瑣,大大地降低了軟件開發(fā)階段的效率,大量進程間的消息傳遞也導(dǎo)致了通信的復(fù)雜和錯誤率的提高。針對地震資料處理系統(tǒng)分布式并行流程開發(fā)過程中,所遇到的分布式并行應(yīng)用問題,從軟件開發(fā)的角度設(shè)計地震資料處理系統(tǒng)控制流程模型,并基于設(shè)計的控制模型,構(gòu)建可視化的描述方法,根據(jù)可視化描述方法構(gòu)建的流程圖,自動生成可執(zhí)行的動態(tài)代碼,本應(yīng)用具體的意義表現(xiàn)在:實現(xiàn)地震資料處理系統(tǒng)并行處理流程的可定制性:地震資料并行處理時的分布式并行設(shè)計具有多樣性,對于不同的任務(wù)需不同的控制流程。通過地震資料處理系統(tǒng)流程模型和可視化描述語言的建立,實現(xiàn)處理流程的可定制性,使設(shè)計變得簡單靈活、可擴展。
....
1.2 研究現(xiàn)狀概述
地震資料是指在油氣的勘探過程中,首先由人工來激發(fā)地震(放炮),然后利用設(shè)備檢測、記錄地震波信號的傳播時間、振幅、波形以及在此過程中所涉及的設(shè)備數(shù)據(jù)等資料[9]。經(jīng)過上述過程收集的記錄在磁帶上進行存儲形成最原始的地震數(shù)據(jù)。通過地震資料處理系統(tǒng)對采集的數(shù)據(jù)進行處理可以獲得對應(yīng)的地震構(gòu)造圖形,數(shù)據(jù)處理人員通過對地震數(shù)據(jù)進行分析解釋可以得出油氣儲層的信息[10][11]。 地震資料處理和解釋系統(tǒng)一直被很多大公司和研究機構(gòu)作為研究熱點。目前,已經(jīng)有很多種并行處理與解釋系統(tǒng)走向?qū)嶋H應(yīng)用[12],如 geocluster,WeVista,OpenSpirit等。OpenSpirit 由 Shell、Chevron 和 Schlum-berger 三家公司聯(lián)合研發(fā)的,OpenSpirit 為能源工業(yè)提供了一個應(yīng)用集成框架,使對能源工業(yè)的處理可以獨立于廠商和平臺,由一系列的如坐標(biāo)變換等基本 E&P 組件和一些針對地下地質(zhì)解釋的組件可以自由的進行對應(yīng)流程的處理。WebVista 則是基于 web 技術(shù)的地震處理系統(tǒng),其應(yīng)用具有多種優(yōu)點的瀏覽器/服務(wù)器(B/S)模式。國產(chǎn)的地震資料處理軟件主要有東方地球物理公司物探技術(shù)研究中心研發(fā)的 GRISYS 及中國海洋石油海量數(shù)據(jù)并行處理軟件 MPS[13][14][15]。
.........
第二章 地震資料處理系統(tǒng)控制流程動態(tài)代碼自動生成總體架構(gòu)
本章通過對 SPS 中分布式并行計算涉及的控制流程進行分析,抽象出其中存在的控制流程類型,并研究了不同的控制流程在軟件開發(fā)過程中存在的復(fù)雜性和困難性,從解決復(fù)雜的控制流程代碼開發(fā)問題的角度出發(fā),提出基于 SPS 控制流程的動態(tài)代碼自動生成技術(shù)的總體框架,并通過對框架的介紹,引出本課題的主要研究內(nèi)容。
2.1 地震資料處理系統(tǒng)控制流程的研究
目前,為了提升海量地震數(shù)據(jù)處理的效率,分布式并行計算被大量的引入進地震資料處理系統(tǒng)軟件的開發(fā)中。從整個軟件的平臺架構(gòu)到內(nèi)部算法模塊的調(diào)度甚至于算法模塊的內(nèi)部實現(xiàn),都貫穿著分布式和并行的相關(guān)處理。基于多核多處理器集群的多節(jié)點[31]、多進程[19]、多線程[32]的 SPS 的設(shè)計已經(jīng)成為了海量高精度地震數(shù)據(jù)快速處理的發(fā)展趨勢。如圖 2.1 是一個基于高性能計算集群 SPS 分布式并行計算框架。在每個節(jié)點上,根據(jù)地震 SPS 數(shù)據(jù)處理的流程功能,將整個流程分為輸入、運算和輸出三個子進程進行實現(xiàn),最大限度的提升數(shù)據(jù)流運算速度。各進程之間在數(shù)據(jù)傳遞上采用了基于共享內(nèi)存的數(shù)據(jù)共享,在執(zhí)行順序上依靠進程間的事件通知保證各子進程的運算流程的同步。 數(shù)據(jù)文件并行讀寫:統(tǒng)一任務(wù)下不同節(jié)點的輸入和輸出進程,同時對遠程磁盤上相同的輸入和輸出文件進行操作。為了保證數(shù)據(jù)傳輸過程中對網(wǎng)絡(luò)資源的合理利用和文件讀寫的正確性,利用統(tǒng)一的讀寫管理進程,通過跨節(jié)點的事件通知對各節(jié)點的讀寫進行統(tǒng)一管理。 節(jié)點內(nèi)計算模塊調(diào)度:在具體的數(shù)據(jù)運算中,為了有效的利用節(jié)點上的計算資源,在運算進程中,將每個運算模塊以線程池的形式進行啟動,并通過不同模塊占用計算資源的多少進行其模塊數(shù)量的動態(tài)分配,在各線程之間以數(shù)據(jù)池的形式進行數(shù)據(jù)的傳遞。為了保證獲取數(shù)據(jù)的同步,各線程間采用事件通知和數(shù)據(jù)共享的形式實現(xiàn)了數(shù)據(jù)任務(wù)的同步執(zhí)行和模塊間運算流程的異步執(zhí)行。
..........
2.2 基于地震資料處理系統(tǒng)控制流程的動態(tài)代碼自動生成架構(gòu)
本節(jié)將針對2.1節(jié)中提出的在SPS中分布式并行計算流程開發(fā)過程中軟件開發(fā)者遇到的問題,結(jié)合動態(tài)代碼自動生成技術(shù),設(shè)計適用于 SPS 控制流程開發(fā)的動態(tài)代碼自動生成技術(shù),并對其實現(xiàn)的總體架構(gòu)進行設(shè)計。基于 SPS 控制流程的動態(tài)代碼自動生成的架構(gòu)如圖 2.2 所示: 圖 2.2 所示,在地震資料處理系統(tǒng)(Seismic Data Processing System,SPS)基礎(chǔ)上,抽象出地震資料處理系統(tǒng)控制流程模型(Seismic Data Processing System Control Process Model,SPCM)。然后基于 SPCM,構(gòu)建可描述其控制流程的可視化建模的地震資料處理系統(tǒng)控制流程建模語言(Seismic Data Processing System Control Process Modeling Language,SPCML)和表示其代碼構(gòu)成的動態(tài)代碼生成模型(Dynamic Code Generation Model,DCGM)。基于 XMI 的設(shè)計思想,設(shè)計與 SPCML 對應(yīng)的控制模型元數(shù)據(jù)標(biāo)記語言(Seismic Data Processing System Control Process Matedata Mark Language,SPCMML),用來描述 SPCML 可視化建模的信息,使其具有可獲取和解析性。最后設(shè)計動態(tài)代碼的轉(zhuǎn)換算法,通過 SPCMML的使用,生成描述 SPS 控制流程邏輯關(guān)系的解析語義樹(Parsing Semantic Tree,PST),基于 PST 的解析,完成由 SPCML 建模到代碼實現(xiàn)的轉(zhuǎn)換,最終生成可編譯執(zhí)行的動態(tài)代碼。
第三章 SPCML 的設(shè)計 ............ 14
3.1 SPCM 的設(shè)計 ........... 14
3.1.1 基礎(chǔ)功能元素的定義 ...... 15
3.1.2 邏輯關(guān)系元素的定義 ...... 16
3.2 SPCML 的設(shè)計 ......... 17
3.2.1 圖形庫的設(shè)計 ......... 18
3.2.2 語義庫的設(shè)計 ......... 19
3.2.3 SPCML 的構(gòu)建 ....... 20
3.3 SPCMML 的設(shè)計 ..... 21
3.4 本章小結(jié) .......... 22
第四章 地震資料處理系統(tǒng)控制流程的動態(tài)代碼自動生成模型....... 23
4.1 動態(tài)代碼生成模型的設(shè)計 ......... 23
4.2 地震資料處理系統(tǒng)控制流程解析語義樹的設(shè)計 ......... 33
4.3 動態(tài)代碼自動生成算法 .... 37
4.4 本章小結(jié) .......... 39
第五章 地震資料處理系統(tǒng)控制流程動態(tài)代碼自動生成的實現(xiàn) ............ 40
5.1 動態(tài)代碼自動生成運行環(huán)境和功能介紹 ............ 40
5.1.1 動態(tài)代碼自動生成工具運行環(huán)境 .... 40
5.1.2 動態(tài)代碼自動生成的功能介紹 ........ 40
5.2 動態(tài)代碼自動生成的實現(xiàn) ......... 40
5.3 動態(tài)代碼自動生成的測試 ......... 43
5.4 本章小結(jié) .......... 49
第五章 地震資料處理系統(tǒng)控制流程動態(tài)代碼自動生成的實現(xiàn)
本章在前幾章控制流程模型和動態(tài)代碼自動生成模型的基礎(chǔ)上,設(shè)計基于地震資料處理系統(tǒng)控制流程的動態(tài)代碼自動生成工具。應(yīng)用面向?qū)ο蟮乃枷耄瑢ι鲜鎏岬降哪P椭械母鞣N算法,進行有效的抽象,實現(xiàn)高效的,規(guī)范的功能接口。對實現(xiàn)后的工具進行使用和測試,保證其與對應(yīng)模型的一致性和使用的正確性。
5.1 動態(tài)代碼自動生成運行環(huán)境和功能介紹
在本節(jié)中主要介紹 SPS 控制流程動態(tài)代碼自動生成工具的運行環(huán)境和功能,分別對地震資料處理系統(tǒng)控制流程動態(tài)代碼自動生成工具的軟硬件環(huán)境、開發(fā)工具以及所需實現(xiàn)的功能進行了介紹。 軟件開發(fā)人員根據(jù)實際處理需求,建立 SPS 控制流程的設(shè)計,并使用 Microsoft office visio 2007 繪圖工具建立基于控制流模型的可視化描述,并通過在繪圖工具中建立的宏模型導(dǎo)出對應(yīng)的 SPCMML 文件,,再將 SPCMML 文件轉(zhuǎn)換成對應(yīng)的解析語義樹,結(jié)合代碼存儲模型和底層支撐庫生成可編譯調(diào)試的動態(tài)代碼。 動態(tài)代碼自動生成工具的實現(xiàn)是基于 SPS 控制流程模型和動態(tài)代碼自動生成模型的,因此動態(tài)代碼自動生成工具的實現(xiàn)分為兩個部分:SPS 控制流程模型的建立和與控制流程模型對應(yīng)代碼的自動生成。
........
結(jié) 論
本論文通過研究國內(nèi)外 SPS 的發(fā)展趨勢,得到了分布式并行計算正在 SPS 的開發(fā)中被廣泛應(yīng)用的結(jié)論,并在分析 SPS 分布式并行計算中涉及的控制流程過程中,發(fā)現(xiàn)由于 SPS 中控制流程的復(fù)雜性,在分布式并行計算的開發(fā)過程中,軟件開發(fā)人員遇到了一系列的問題,影響了軟件開發(fā)的效率和正確性。 本文的設(shè)計從軟件開發(fā)人員在 SPS 分布式并行計算開發(fā)過程中遇到的問題出發(fā),通過對代碼自動生成技術(shù)的相關(guān)研究,結(jié)合 SPS 自身的特點,設(shè)計了滿足 SPS 分布式并行計算控制流程開發(fā)需求的動態(tài)代碼自動生成流程,來減少軟件開發(fā)人員在功能設(shè)計和代碼實現(xiàn)過程中大量復(fù)雜的工作,并通過具體實例的設(shè)計和應(yīng)用,證明本課題研究的正確性和可應(yīng)用性。本文著重對以下幾個方面進行了設(shè)計:
1. 設(shè)計了地震資料處理系統(tǒng)控制流程建模語言 通過對 SPS 中涉及的與控制流程相關(guān)的對象的抽象和符號定義形成控制流程模型SPCM,結(jié)合對 UML 順序圖的構(gòu)件的重定義和語義擴展,形成了 SPS 的控制流程建模語言 SPCML。通過對 SPCML 的應(yīng)用,解決了在控制流程方案設(shè)計過程中,無法進行風(fēng)格統(tǒng)一的設(shè)計,影響軟件開發(fā)人員對控制流程理解的問題。
2. 動態(tài)代碼生成模型的設(shè)計 在 SPCM 的基礎(chǔ)上,通過對 SPS 中應(yīng)用接口、存儲格式的分析,設(shè)計了 SPCM 中元素對應(yīng)的接口設(shè)計規(guī)則和存儲格式規(guī)則。并在接口設(shè)計規(guī)則的基礎(chǔ)上,對 SPCM 中具體元素對應(yīng)的代碼段的實現(xiàn)進行了設(shè)計,形成了代碼實現(xiàn)規(guī)則,同時通過 SPCM 與SPCML 的關(guān)聯(lián),將代碼實現(xiàn)規(guī)則與 SPCML 具體的圖形和語義進行映射,形成了動態(tài)代碼生成模型 DCGM。DCGM 的應(yīng)用解決了大量復(fù)用底層功能接口重復(fù)開發(fā)的問題。
.........
參考文獻(略)
本文編號:48985
本文鏈接:http://sikaile.net/wenshubaike/lwfw/48985.html