999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多核環境下潮汐分析輔助軟件并行繪制技術研究

2017-05-24 14:45:32單維鋒陳福明
計算機測量與控制 2017年5期
關鍵詞:分析

單維鋒,陳福明,李 軍

(防災科技學院 災害信息工程系,河北 三河 065201)

多核環境下潮汐分析輔助軟件并行繪制技術研究

單維鋒,陳福明,李 軍

(防災科技學院 災害信息工程系,河北 三河 065201)

為方便科研人員使用Baytap-G潮汐分析軟件,基于C#.NET程序設計語言設計了一套潮汐分析輔助軟件,實現了Baytap-G軟件的封裝,完成了輸入數據格式的自動轉換、輸出數據的自動提取,以及水位、振幅、相位數據的可視化展示;在介紹C#.NET語言中任務(TASK)并行編程模型的基礎上,詳細討論了繪制振幅、相位圖任務分解、并行化程序設計考慮及其實現;實驗結果表明,合理設計并行程序可以充分利用多核計算機的計算資源,提升程序運行效率,但是過多的任務數、不均勻的工作負載通常會影響并行程序的效率。

多核;潮汐分析;并行;繪制;任務

0 引言

多年來,國內外研究人員廣泛開展了潮汐應力與地震活動性關系的研究,探索地震孕育規律[1-4]。近年來,開始研究固體潮的相位變化及其與孕震有關聯的潮汐參數變化和地震相關關系研究。重力固體潮汐的研究工作主要是通過對觀測數據實施調和分析獲得相關參數(振幅因子和相位滯后),然后研究這些數據的變化與地震之間的關系[5]。

Baytap-G是國際上廣泛應用的固體潮觀測數據分析軟件[6],由日本Tamura博士研制,Baytap-G軟件使用Fortran語言編寫。由于Baytap -G軟件參數眾多,科研人員經常因為參數配置問題或數據格式問題,導致運行錯誤;其次,軟件要求的輸入數據格式和科研人員下載到的水位數據格式不同,不僅需要進行數據格式轉換,而且需要將開始時間、數據記錄總條數等信息同時寫入到數據文件和參數配置文件中,工作繁雜,易于出錯,從而導致計算結果錯誤;此外,輸出文件中雖然包含了各個波的振幅、相位、潮汐因子等數據,但是除此之外還有很多其它輔助數據,數據可讀性差、波形參數數據提取困難,迫切需要一套輔助軟件幫助科研人員形象直觀的完成參數配置、輸入數據格式自動轉換,數據自動填充,并從計算結果中快速提取振幅、相位、影響因子等波形數據,實現原始水位數據、振幅、相位數據和地震震級數據的可視化展示。

此外,隨著多核時代的到來,傳統的串行程序難以利用現有多核計算機的CPU計算資源。以多線程技術為代表的并行程序設計技術能夠有效地發揮多核CPU的計算能力,并可顯著提高程序的執行效率。雖然多線程技術在單核時代已經存在了數十年,但只有在多核計算機或多CPU計算機上才真正實現了并行化。因此,隨著多核CPU的普及,軟件由串行編程時代開始步入并行編程時代。很多軟件設計已經開始充分考慮多核資源的利用[7]。

本文研制的Baytap-G潮汐分析輔助軟件就是為了方便科研人員的使用,應用C#.NET編程語言對Baytap-G軟件進行了封裝,完成了輸入數據格式的自動轉換和輸出數據的自動提取,實現了水位、振幅、相位數據的并行可視化,降低了使用難度。

本文在介紹潮汐分析輔助軟件及C#.NET編程語言中基于任務的新并發編程技術的基礎上,分析了并行繪制圖形關鍵技術,通過對比實驗分析了軟件并行化后的繪制性能。

1 潮汐分析輔助軟件并行化分析

Baytap-G潮汐分析輔助軟件采用SDI程序風格,包含“系統”、“潮汐數據處理”和“關于”3個主菜單項,如圖1所示。“系統”菜單項下面包含“退出”子菜單項。“潮汐數據處理”下包含“潮汐分析”、“繪制水位圖”、“繪制振幅相位圖”等功能,功能較為簡單。

圖1 Baytap-G潮汐分析輔助軟件

“潮汐分析”功能是對Baytap-G軟件的封裝,首先,軟件將用戶在本界面錄入的各種參數信息以及選擇的水位數據文件,按照Baytap-G軟件格式保存到參數文件input05.dat、input12.dat和input14.dat(如果包含氣壓數據)文件中。然后,調用baytap-G軟件進行計算,計算完成后,會自動從baytap-G軟件輸出文件output06.dat中提取各個波形數據,保存到用戶指定的輸出文件夾下,每個波形數據保存為一個文件,命名為Sheet_xxx.txt,其中xxx表示波的名稱如O1、M2、N2等,最多12個波。在該文件中,每行為一條記錄,包含了時間、振幅、相位、誤差等數據,中間用逗號分隔,時間僅記錄每次潮汐計算的開始時間。

通過對Baytap-G程序進行分析,發現如果輸入的水位數據多,SPAN和SHIFT參數設置較小情況下,計算工作量會非常大。但由于Baytap-G程序每個SPAN數據的計算依賴于用戶選擇的起始數據和以前的計算結果,因此難以并行化。

此外,由于“繪制水位圖”是對用戶待處理水位數據的簡單可視化實現,計算任務量并不大,因此也沒有必要進行并行化。程序運行界面如圖2所示。

圖2 水位圖

繪制振幅、相位圖是為了直觀形象的對比分析各個波形數據和水位數據及地震之間的關系,如圖3所示。用戶點擊“選擇數據文件夾”后面的瀏覽按鈕,選擇存放baytap-G輸出數據的文件夾,然后直接點擊“繪制”按鈕,就可以同時將水位數據、振幅數據和相位數據繪制在界面上。用戶可以通過選擇SYMBOL后面下拉框的值繪制不同的波形數據圖,用戶也可以定制曲線的顏色,以及繪制的刻度數等參數,調整圖形。水位數據、振幅數據和相位數據使用相同的時間軸,以便進行對比,但是X軸刻度可以分別進行調整。在水位數據中,僅將缺數數據簡單置為0,因此從圖3可以看出水位有多處突升和突降。圖4的下半部分是振幅、相位數據,由于其意義和取值范圍存在很大差別,因此將右側作為振幅的Y軸,左側作為相位的Y軸,共用一個X時間軸,根據實際取值等比縮放在一個相同的Y軸空間內。通過此圖,可以直觀的觀察水位數據和波形數據之間的關系。

此外,如果在圖3中點擊“選擇震級Excel”標簽后的“瀏覽”按鈕,指定了地震目錄數據,還可以根據地震的發震時刻,將震級數據同時繪制在此界面上,每個震級用下箭頭表示。地震目錄Excel文件要依次包含發震日期、年、月、日、時間、震級、經度、維度、深度等信息,否則無法正常標注。

由此可見,振幅相位圖繪制功能計算任務繁重,如果采用傳統的串行編程模式,一方面難以發揮多核計算機的計算能力,另一方面由于串行計算時間長,用戶需要更長的等待時間。在確定了繪制坐標原點、繪制長度和高度之后,完全可以并行繪制水位圖、振幅圖和相位圖,因為這些任務之間幾乎沒有依賴關系。

圖3 振幅相位圖面

2 C#.NET并行程序設計技術

隨著多核時代的到來,傳統的串行程序難以利用現有計算機的多核CPU計算資源,多線程技術可以有效地發揮多核CPU的計算能力,在很大程度上提高程序的運行效率。雖然多線程技術在單核時代已經存在了數十年,但是多線程在實際執行時,在同一個時刻只有一個線程處于活動狀態。而在多核時代,多個線程可以同時并行執行。由于多核體系結構和單核體系結構在緩存和線程優先級等方面存在巨大的差別,在設計多線程應用程序時,需要仔細分配各個線程的工作負載才可能達到最高的性能。眾所周知,在基于多線程技術的并行程序設計中,軟件開發者必須通過鎖、信號量等同步機制來進行細粒度的控制,導致開發難度大、難以理解、難以檢驗等諸多問題。

微軟在發布的 .NET Framework 4.0中增強了其并行編程功能,引入了一個新的概念——任務。作為并行計算的重要組成部分,任務是對傳統線程池技術的一個補充和完善。眾所周知,在使用線程池技術時,一旦把要執行的任務放進去后,就無法通過內置的方式知曉任務何時才能執行完成。任務相比線程池有更小的開銷和精確的控制方式,這使得多核環境下并行編程變得相對簡單。

在.NET Framework 4.0的中System.Threading.Tasks 命名空間下包含了任務相關類,如果執行的任務不需要返回值,可以使用Task類,若需要處理返回值,可以使用Task泛型版本。

有兩種方式創建任務,一種是通過Task.Factory.StartNew方法來創建一個新任務,任務創建完成,其中的代碼被馬上執行。

另一種方法是通過Task類的構造函數來創建一個新任務,如:

Task task = new Task( ()=>Console.WriteLine(“Test Task!”));

用此方法時,只是把要完成的工作交給任務,但任務并未真正開始執行。需要調用任務對象task的Start方法,任務才會在將來某個時候開始執行。

此外,還可以調用Task類的WaitAll或WaitAny方法來等待一組或任意一個任務的完成,也可以調用某個具體任務的IsCompleted屬性來判斷任務是否完成。

由此可見,相對于線程池技術,任務提供了更易于理解的封裝,具有更易用的訪問接口,特別適合任務并行等同步操作較少的場合。

3 基于任務的振幅相位圖并行繪制技術

3.1 初步任務分解

并行繪制振幅相位圖,首先是對數據進行預處理,把水位數據和震級數據合并為一個內存結構中(如鏈表),在處理過程中順便求出水位的最大值和最小值,以便等比例縮放水位數據,同時將缺數數據置為0。然后根據選擇的波,讀取波形數據文件中的時間、振幅、相位數據,并分別找出振幅和相位數據的最大值和最小值,以便計算并繪制高度。接著需要定義水位、震級圖(圖3上半部分)坐標原點、高度和寬度,定義振幅、相位圖(圖3下半部分)的坐標原點、高度和寬度,其中上、下兩部分圖的寬度相同,以便對比分析。上述任務完成后,就可以繪制坐標軸、水位、振幅、相位了。所以一種可能的任務分解如圖5所示。

圖4 初步任務分解圖

3.2 并行任務實現

雖然可以將圖4中的每個任務直接映射到C#.NET中任務,從而實現并行化軟件改造,但是由于任務最終通過線程技術實現,因此任務太多,導致線程調度過于頻繁,無謂的消耗會影響系統的性能。此外,還需要考慮任務之間的負載均衡問題,系統的運行時間取決于最后任務執行完畢的時間。

因此,考慮到震級的數據量遠遠小于水位數據,將繪制水位圖和繪制震級任務合并為一個任務。另外,由于潮汐計算產生的振幅、相位數據依賴于SHIFT參數的設置,數據量約為水位/SHIFT,因此遠小于水位數據個數,因此將繪制振幅和相位圖、繪制坐標任務合并一個新的任務。此外,將定義坐標及其之前的所有任務合并為一個并行任務。設計完成后,程序實際的并行任務模型如圖5所示,僅包含3個任務。

圖5 任務執行圖

將上述每個功能任務封裝為一個方法,然后通過Task.Factory.StartNew方法創建并執行一個任務,核心代碼如下:

Task t1 = Task.Factory.StartNew(() =>

{

處理水位數據;

處理震級數據;

合并水位/震級數據;

處理潮汐分析數據;

定義坐標;

});

Task t2 = t1.ContinueWith(t =>

{

繪制水位圖;

繪制震級;

});

Task t3 = t1.ContinueWith(t =>

{

繪制振幅圖;

繪制相位圖;

});

在上述代碼中任務象t1的ContinueWith方法表示等待t1任務完成后再執行方法主體部分的代碼,即任務t1執行完成后才會執行t2和t3任務,所以t1和t2之間是串行執行,t1和t3之間也是串行執行,但是t2和t3是并行執行的。

4 實驗結果分析

為了對比潮汐分析輔助軟件并行化前后系統的性能,通過本軟件的潮汐分析功能產生了7組潮汐分析數據。繪圖數據包括水位、振幅、相位數據。理論上,并行繪制技術涉及到線程的創建、調度等額外開銷,在處理的數據規模較大和任務分配較為平均的情況下,會有較大的性能提升。因此,考慮到各種情況,選取測試用例如表1所示。

T5測試用例數據最少,T4用例的水位數據最多,T6和T7測試了相同水位個數下不同振幅/相位數的情況。各測試用例的結果如圖7所示,每個用例分別運行5次,然后取平均運行時間作為該用例的耗時時間。

表1 測試用例

圖6 測試結果圖

在圖6中,橫坐標為測試用例,縱坐標為串行程序或并行程序的運行耗時。無論是串行程序還是并行程序,都是隨著處理數據量的增加而處理時間有所增長。總的來看,程序并行化后,系統的運行時間有所縮短,在所有的測試用例中,并行程序的耗時都比串行程序低,并行程序性能明顯高于串行程序。在測試用例T4中,并行性能大大高于串行程序性能,表明當程序運算任務繁重時,并行程序可以顯著改善串行程序的性能,相反并行程序并不具有優勢,如T5用例,水位數據和振幅相位數據都最少,系統并行化性能提升非常有限。T6、T7的水位數據相同,T6振幅相位數據多于T7,換句話說,根據3.2節任務的劃分,T6中任務t2和t3負載較T7更均衡一些,因此T6并行性能明顯高于T7。

在實際測試也發現,如果任務數目過多或負載分配不均衡會大大影響并行程序的性能。

5 結論

本文基于C#.NET程序設計語言中任務機制實現了Baytap-G潮汐分析輔助軟件并行繪制振幅、相位圖功能,并就相關技術和關鍵細節進行闡述。程序并行化后,系統運行效率有了較大提升。但是相對于串行程序而言,并行編程仍然存在很大挑戰,如何設計數目合理的任務、如何處理任務之間的關系、如何合理分配任務都會影響到系統的性能。任何一個環節處理不好,都有可能適得其反,這也是當前并行程序設計存在的主要難點。

[1] 張 晶,陳榮華,楊林章,等. 強震前形變潮汐異常判識與機理研究[J].地震學報,2006,28(2):150-157

[2] 廖 欣,劉春平,楊賢和, 等. 承壓井水位對含水層潮汐應力響應是否滿足不排水條件的檢驗[J].地震學報, 2011,33(2):234-242,270

[3] 熊 峰, 張 起, 查 斯, 等. 海拉爾地震臺重力潮汐擾動分析[J]. 山西地震, 2015(2):21-23

[4] 陳志遙,呂品姬,李正媛,等.汶川Ms8.0地震前的潮汐變化分析[J].大地測量與地球動力學,2009,29(4):48-50

[5] 陳曉東,孫和平. 一種新的重力潮汐數據預處理和分析方法[J].大地測量與地球動力學,2002,22(3):83-87

[6] Tamura Y, Sato T, et al.A procedure for tidal analysis with a Bayesian information criterion[J]. Geophysical Journal International, 1991(104):507-516

[7] 潘佳賓,胡越黎,陳曉君,等.基于多核的車牌識別的架構實現[J].計算機測量與控制,2015,23(1):213-217.

Research on Parallel Drawing Technology of Tide Analysis Aided Software Under Multi-core Environment

Shan Weifeng, Chen Fuming, Li Jun, Wang Jinfeng

(Department of Disaster Information Engineering, Institute of Disaster Prevention, Sanhe 065201, China)

In order to help researcher to use Baytap conveniently, a new tide analysis aided software based on C#.NET programming language is designed, which encapsulates the Baytap-G software, and automatically transfer the input data into the target format. It also provides the ability of data extraction from the Baytap-G output data file and visual drawing for water level, phase and amplitude data. After introducing of TASK parallel programming model in C#.NET language, the paper analyzes the task decomposition of drawing diagram for the water level, amplitude and phase data, then gives the design and implement consideration of parallel program. The experimental results show that the reasonable design of parallel programs can make full use of multi-core computer computing resources, and improve the efficiency of the program. However, too much tasks and uneven workload usually seriously affect the efficiency of parallel program.

multi-core; tide analysis; parallel; drawing; task

2017-02-14;

2017-03-07。

中國地震局教師科研基金(20130111);國家自然科學基金(41504037);地震科技星火計劃(XH16059);中央高校基本科研業務費專項資金(創新項目團隊資助計劃)(ZY20160106)。

單維鋒(1977-),男,山東茌平人,博士,副教授,主要從事地震大數據、可視化技術方向的研究。

1671-4598(2017)05-0140-03

10.16526/j.cnki.11-4762/tp.2017.05.039

TP311

A

猜你喜歡
分析
禽大腸桿菌病的分析、診斷和防治
隱蔽失效適航要求符合性驗證分析
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統及其自動化發展趨勢分析
經濟危機下的均衡與非均衡分析
對計劃生育必要性以及其貫徹實施的分析
現代農業(2016年5期)2016-02-28 18:42:46
GB/T 7714-2015 與GB/T 7714-2005對比分析
出版與印刷(2016年3期)2016-02-02 01:20:11
中西醫結合治療抑郁癥100例分析
偽造有價證券罪立法比較分析
在線教育與MOOC的比較分析
主站蜘蛛池模板: 国产无遮挡裸体免费视频| 国产91丝袜在线播放动漫 | 亚洲欧美成aⅴ人在线观看 | 一级毛片不卡片免费观看| 国产XXXX做受性欧美88| 色老头综合网| 国产一二三区视频| 国产精品久久久久婷婷五月| 婷婷丁香在线观看| 国产主播在线一区| 久久精品视频亚洲| 欧美伊人色综合久久天天| …亚洲 欧洲 另类 春色| 亚洲成av人无码综合在线观看| 爽爽影院十八禁在线观看| 亚洲日韩高清在线亚洲专区| 91精品国产综合久久香蕉922| 91外围女在线观看| 亚洲无码91视频| 国产精品尤物铁牛tv | A级全黄试看30分钟小视频| 十八禁美女裸体网站| 无码福利日韩神码福利片| 国产福利一区视频| 啦啦啦网站在线观看a毛片| 亚洲手机在线| 欧美精品1区| 国产农村妇女精品一二区| 在线观看国产黄色| 在线观看亚洲国产| 国产SUV精品一区二区| 9966国产精品视频| 91网红精品在线观看| 国产精品永久免费嫩草研究院| 久久人体视频| 伊人查蕉在线观看国产精品| 免费国产福利| 九色国产在线| 久久婷婷五月综合97色| 亚洲日韩精品无码专区97| 久久夜夜视频| 三级欧美在线| 免费a级毛片视频| 国产精品.com| 国产a v无码专区亚洲av| 色有码无码视频| 亚洲a免费| 午夜精品福利影院| 国产18在线| 久久99精品国产麻豆宅宅| 免费无码网站| 久久激情影院| 2021国产精品自拍| 欧洲成人在线观看| 精品亚洲国产成人AV| 亚洲av无码人妻| 大香伊人久久| 久久久久久久久久国产精品| 亚洲欧美一区二区三区麻豆| 日日噜噜夜夜狠狠视频| 天天干天天色综合网| 国产欧美精品专区一区二区| 亚洲欧美不卡视频| 99ri精品视频在线观看播放| yy6080理论大片一级久久| 日本三区视频| 在线一级毛片| 欧美日韩一区二区在线免费观看| 精品成人一区二区三区电影| 热热久久狠狠偷偷色男同| 国产靠逼视频| 制服丝袜一区二区三区在线| 成人一级免费视频| 成人福利在线免费观看| 亚洲无线观看| 2021国产v亚洲v天堂无码| 日本成人不卡视频| 97视频精品全国免费观看| 中国国产高清免费AV片| 97视频免费在线观看| 国产精品3p视频| 日韩在线成年视频人网站观看|