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

基于進程投機并行的運行時系統設計與優化

2014-06-02 06:35:14馮曉兵
計算機工程 2014年3期
關鍵詞:進程程序系統

劉 雷,李 晶,陳 莉,馮曉兵

?

基于進程投機并行的運行時系統設計與優化

劉 雷1,2,李 晶1,2,陳 莉1,馮曉兵1

(1. 中國科學院計算技術研究所,北京 100190;2. 中國科學院大學,北京 100190)

投機并行化是解決遺留串行代碼并行化的重要技術,但以往投機并行化運行時系統面臨著諸多的性能問題,如任務分配不均衡、通信頻繁、沖突代價高,以及進程啟動/結束頻繁而導致開銷過高等。為此,提出一種基于進程實現的投機并行化運行時系統。采用隱式單程序多數據的并行任務劃分和執行模式,通過實現重用進程的投機任務調度策略和委托正確性檢查技術,降低投機進程啟動/結束和通信的開銷,提高投機進程的利用率,同時利用守護進程與投機進程協同執行的方式,確保在投機進程出現異常情況時程序也能正確執行。實驗結果表明,該基于進程實現的投機運行時系統比同類型系統的性能提高231%。

軟件投機并行;基于進程投機并行;運行時并行;委托正確性檢查;并行任務劃分

1 概述

多核處理器結構已經成為當今的主流硬件結構,但如何對遺留的串行軟件進行并行化改造,是計算機產業界和研究界面臨的巨大挑戰。投機并行化方法利用運行時分析技術,可以更精確地了解程序特征信息,從而獲得比傳統靜態分析方法更多的并行性,已經成為近年來的研究熱點。

然而,投機并行化的產業化之路并不明朗。對于當今主流的基于線程的投機并行化方法,需要特殊的硬件支持來降低開銷[1]。Intel的研究表明[2],基于線程的投機并行化在考慮實際開銷的情況下,并行化后的性能加速才有18.18%。如此低的性能提升,導致目前的硬件廠家都沒有實現對線程投機并行化的硬件支持。而純軟件的投機并行化系統不僅運行時開銷比較大,而且為了支持投機過程中對程序狀態的備份,線程還極易出現死鎖、數據沖突、ABA等諸多難于調試的問題,導致其實現難度非常大。

相較而言,利用進程可以更容易地實現軟件投機并行化系統,進程間天然的地址獨立性可以很好地解決投機所需的存儲空間維護難題,能夠自動實現變量的私有化和副本化。同時,由于子進程的虛存地址和父進程的虛地址是一致的,可以很容易地實現訪存的正確性檢測機制。此外,該方法也特別適合于發掘更粗粒度的并行性。最近已經有很多的研究機構采用基于進程或類似的方法來開發投機并行化系統[3-5]。

但是目前軟件投機并行化系統的運行時開銷還很大,從而影響了該技術的推廣。例如,文獻[3]提出基于進程的投機并行系統BOP,它創建的投機進程執行一次任務后就馬上退出,在下次投機階段開始時又要再創建新的進程來執行,頻繁的進程啟動、注銷導致了很大的運行時開銷。當投機執行失敗時,BOP會殺死所有的投機進程,從頭串行執行,因而白白浪費了很多的執行時間。此外,投機任務間的負載不平衡問題也很嚴重。

采用線程實現的投機并行化系統,盡管開銷相對小,但其運行時系統依然有很多需要優化的地方。如文獻[6-9]的投機并行化方法,用主線程來維護系統的正確性,在進入投機循環時,主線程將迭代任務分配給各投機線程,各投機線程在執行完成后按序將結果提交給主線程進行正確性驗證[9]。當驗證通過時,主線程讀入相應結果,并繼續往下檢測其他投機結果。而如果發現沖突,主線程則舍棄當前結果,重新執行。盡管通過線程池技術,該方法并沒有頻繁的線程啟動/結束開銷,但由于主線程是按序執行的,且只會在新的循環迭代時才將任務賦給投機線程,使得投機線程每執行完一次任務,它都需等待較長時間才能獲得下次任務。這種運行時實現機制同樣會導致較大的線程間同步等待開銷,還是會影響程序的并行化性能。文獻[10]在線程投機并行系統中提出了值預測的方法減少同步開銷,但是優化能力有限,還帶來了額外的硬件開銷。

目前的軟件投機并行化系統為了保證按序提交數據及進行正確性檢測,投機任務間需要很大的進程(線程)啟動或調度開銷,以及數據通信和同步開銷等[11-12]。因此,現有投機并行系統的運行時方法都存在任務分配不平衡、沖突代價高和通信開銷大的問題。這些問題對基于進程實現的投機并行化系統更為突出,由于進程的創建、進程間通信的開銷和調度開銷較線程方式大得多,如何降低這些開銷也就成為了基于進程實現投機并行的關鍵技術。因此,本文提出一種新型的基于進程的投機任務調度策略,并對該運行時系統的設計理念和算法實現加以闡述。

2 基于進程的軟件投機并行化方法

2.1 基本概念和定義

定義1(任務) 任務是一個指令序列,對應于算法或程序的某個邏輯部分。它是投機并行執行調度的最小單位,投機并行化的第一步就是將問題分解為多個任務。

定義2(執行單元UE) UE是并發執行任務的實體,任務通過分配到一個UE上執行,如進程或線程。

定義3(任務間時序關系) 投機并行化將代碼劃分為串行執行區域和并行執行區域,并行執行區域的任務將采用投機的方式與其他任務并發執行。為了保證投機執行的正確性,除了要對不同任務的訪存進行跟蹤外,還要明確任務間原有的時序關系。若任務t在串行執行語義中是在任務t之前執行的,則稱t先于t執行,記為t<t

定義4(訪存沖突) 對于2個不同的任務tt,如果存在一個存儲單元,任務tt都有對的訪存操作,只要有一個任務對進行寫操作,則稱2個任務間存在著訪問沖突。假設任務t在串行執行時先于t執行,即t<t,則稱任務t依賴于任務t,記為tδt

2.2 進程投機并行化的執行過程

投機并行化技術采用冒險的猜測執行方式去發掘并行性,并利用沖突檢測和回退機制來保證正確性。

當程序執行到投機并行區域時,投機系統先保存當前的狀態,然后啟動執行單元并行的運行目標任務。當各投機的執行單元完成后,再進行正確性驗證,如果沒有沖突發生,則收集各執行單元的執行結果,程序繼續運行后續代碼;否則恢復之前的程序狀態,并將程序指針回退到投機前位置,重新以串行的方式執行程序。投機任務并行執行的流程如圖1所示,實箭頭表示控制流,虛箭頭表示執行的任務。

圖1 投機并行化原理

投機并行化的正確性驗證機制主要負責檢測投機過程中是否存在任務間的沖突,驗證過程分為3步:

(1)各投機執行單元在并行過程中記錄讀寫信息。

(2)投機任務完成后,需要將所收集到的信息提交給其他投機執行單元。

(3)進行投機任務間的沖突檢測。

導致投機失敗的沖突包括:

(1)狀態無法恢復的系統調用,這類調用往往影響系統共享資源的使用或直接修改系統狀態,如內存分配與釋放、文件的讀/寫、進程的創建。

(2)違反訪存的線性一致性,如果2個任務tt,存在著依賴關系tδt,若在并行調度的過程中能夠保證不會出現違反依賴tδt的情況,即對于存在訪存沖突的任務在串行執行時t<t,要求并行調度算法同樣滿足t<t。則稱該調度關系滿足線性一致性要求。否則,說明存在線性一致性 沖突。

(3)異常,在投機并行執行過程中可能出現未知的程序行為,導致異常發生,包括除數為0、死鎖、死循環等情況。傳統的投機系統很難判斷和處理這類異常沖突。

2.3 進程投機的任務劃分和ISPMD執行機制

傳統的基于線程的投機并行化方法,只能對連續執行的代碼段進行投機并行化,為了支持更多類型的并行性,實現了一種稱為隱式單程序多數據(Implicit SPMD, ISPMD)的并行任務劃分和執行模式。

將每個并行任務分成需維護串行執行語義的代碼區域和可能并行執行的代碼區域(PPR)2種類型。并行執行過程采用SPMD的方式,即每個投機進程都會執行需維護串行執行語義的代碼,而僅屬于本次投機任務的進程才執行可能并行執行區域內的代碼。

算法1ISPMD任務劃分和執行舉例 1: SUP_parallel_start();2: while(condition){3: P;4: SUP_task();{5: Q;6: }7: R;8: }9: SUP_parallel_finish();

例如算法1所示的循環,對該while循環的代碼進行并行化,同時要求滿足代碼和串行執行,并發執行。則采用ISPMD任務執行模型,當第個進程串行執行完11…P1R1P后,就可以開始執行投機并行任務Q。假設循環共有次迭代,采用ISPMD劃分方式,執行投機并行化的正確性須滿足以下條件:

(1)各迭代的任務間無訪存沖突,即無QδQ,0≤,≤。

(2)各迭代的任務Q與其后續的任務RP+1R+1…PR間無訪存訪存沖突,即無?,0≤≤,QδRQδP+1∪QδR+1∪…∪QδPQδR成立。

定理對于算法1的并行任務劃分方式,上述2個條件是使用ISPMD方法進行投機并行化的正確性必要保證。

證明:假設是循環所有迭代的個數,根據ISPMD的任務調度規則可知,在投機并行過程中,并發執行的投機任務Q前,已經得到任務11…P1R1P的執行結果,因此它們之間的訪存沖突可以忽略檢測,即不會出現PδQ,≤,或RδQ,0≤<≤。由于原始的程序執行序是1<1<1<…<P<Q<R…,如果存在QδQ,0≤<≤,則該執行結果肯定是錯的;如果存在QδR,≤,或QδP,0≤<≤時,結果也肯定是錯誤的。因此,定理成立。

3 運行時系統的實現方法

3.1 投機并行化的任務分配和調度函數的實現

要實現ISPMD執行方式,如果采用傳統的進程投機并行技術,則當每次遇到可能并行執行代碼區域時,都會創建一個新的進程。這種頻繁的進程創建開銷都是非常巨大的,而且當投機并行過程中沒有沖突發生時,這種開銷是完全沒有必要的。

為了解決這個問題,本文提出了進程重用的概念,利用冗余計算技術和隱式任務派分等技術實現類似線程池的進程調度方法。采用進程重用方法的投機執行方式如圖2所示。各投機進程間沒有直接的消息通信,也沒有同步等開銷。

圖2 進程重用的調度方式

3.2 投機執行正確性保證機制的實現

對于傳統的投機并行化實現技術,為了驗證本次投機執行的正確性,投機進程需要對相關變量的讀寫信息進行記錄,同時等待前次的投機任務完成,以獲取其寫記錄信息來進行驗證。并在自己通過正確性驗證后將該記錄傳遞給下一個投機進程。因此,導致進程間的通信十分頻繁,同步開銷非常大。

為此,本文提出并實現了一種稱為委托正確性檢查的方法,將正確性驗證等操作轉移到一個專門的進程,即守護進程(manager)中進行,進而使得投機進程可以無需等待正確性驗證的結果而直接執行后續迭代。守護進程在對各投機進程提交的數據進行驗證時會自動保證檢測的順序性,即各個任務的驗證順序應與其串行執行的順序保持 一致。

此外,為了解決投機并行系統在發生異常時可能造成的崩潰問題,本文設計的守護進程不僅進行投機并行進程的正確性檢測工作,還會在空閑時以串行的方式執行可能投機代碼段。這樣能夠保證即使投機進程出現異常情況,原始的程序執行也不會受到影響。

投機進程執行完任務后,會將讀寫信息和相應修改的數據提交到進程間共享空間中。守護進程先判斷是否有投機任務執行結束并提交數據,如果有則進行正確性驗證,如果沒有發現沖突,那么守護進程更新程序狀態,然后跳到投機任務之后的代碼繼續執行。如果有錯誤或者沒有投機任務提交,則守護進程串行執行代碼。投機進程執行的算法如下所示:

算法2投機進程的實現算法 1: while (! finish speculation){2: My_task= get_task( );3: if (++cur_task==ma_task){4: Execute (my_task);5: Checkin_data( my_task);6: Commit_task(my_task);7: }else {8: Patial_execute(++cur_task);9: }10: }

4 實驗結果與分析

為了驗證本文投機并行化運行時系統的有效性,與經典的進程級投機并行化系統BOP和采用OpenMP版本的并行程序進行對比。

測試平臺選擇4′4 AMD 4核2.5 GHz Opteron 8380 CPU,32 GB內存服務器,串行和OpenMP編譯器都為Gcc4.4。

測試用例共6個,其中5個選自SPEC標準測試程序集。測試例子Art選自SPEC2000,是一個神經網絡訓練程序。Bzip2選擇SPEC2000,是一個比較經典的數據壓縮程序。Hmmer選自SPEC2006,是計算生物學中的一個多重序列比對統計模型分析程序。Parser選自SPEC2000,是一個英語語法的解析程序。Sjeng 選自SPEC CPU2006,國際象棋程序。QT-cluster(Quality threshold)是一個經典的聚類算法,通過判斷聚類直徑是否超過預設的閾值來進行分類。

實驗結果如圖3所示,其中,SUP是本文的投機并行化系統,圖3顯示在8個工作進程的情況下,本文的進程投機并行化系統的性能加速比明顯好于BOP,幾何平均性能加速比是BOP的2.31倍。事實上,本文系統的性能加速比甚至不比基于線程實現的OpenMP版本差。由于有些程序存在數據依賴,用OpenMP很難并行化,因此沒有相應的OpenMP版本數據。

圖3 性能加速比的對比(8進程)

5 結束語

基于進程的投機并行化技術是近幾年的研究熱點,本文提出一種投機并行的運行時系統,對進程重用、委托檢查技術進行了介紹,這些技術有效地解決了以往投機并行化運行時系統運行時開銷過大的問題。本文方法由于正確性驗證與串行狀態維護的需要,守護進程占用了一個核的計算資源。下一步工作將研究如何在保證正確性的情況下,充分利用守護進程來執行投機任務,從而進一步提高性能。

[1] Steffan J G, Colohan C, Zhai A, et al. The STAMPede Appro- ach to Thread-level Speculation[J]. ACM Transactions on Computer Systems, 2005, 23(3): 253-300.

[2] Kejariwal A, Tian Xinmin, Li Wei, et al. On the Performance Potential of Different Types of Speculative Thread-level Parallelism[C]//Proc. of the 20th Annual International Conference on Supercomputing. New York, USA: ACM Press, 2006: 24.

[3] Ding Chen, Shen Xipeng, Kelsey K, et al. Software Behavior Oriented Parallelization[C]//Proc. of ACM SIGPLAN Conference on Programming Language Design and Implementation. New York, USA: ACM Press, 2007: 223-234.

[4] Ke Chuanle, Liu Lei, Zhang Chao, et al. Safe Parallel Pro- gramming Using Dynamic Dependence Hints[C]//Proc. of ACM International Conference on Object Oriented Program- ming Systems Languages and Applications. New York, USA: ACM Press, 2011: 243-258.

[5] Berger E D, Yang Ting, Liu Tongping, et al. Grace: Safe Multithreaded Programming for C/C++[C]//Proc. of the 24th ACM SIGPLAN Conference on Object Oriented Program- ming Systems Languages and Applications. New York, USA: ACM Press, 2009: 81-96.

[6] Tian Chen, Lin Changhui, Feng Min, et al. Enhanced Specu- lative Parallelization via Incremental Recovery[C]//Proc. of the 16th ACM Symposium on Principles and Practice of Parallel Programming. New York, USA: ACM Press, 2011: 189-200.

[7] 李 瑩, 孫煦雪, 袁新宇, 等. 基于交互信息的投機并行化方法[J].計算機應用研究, 2010, 27(6): 2123-2126, 2139.

[8] Cintra M H, Llanos D R. Design Space Exploration of a Software Speculative Parallelization Scheme[J]. IEEE Transactions on Parallel and Distributed Systems, 2005, 16(6): 562-576.

[9] Bernstein A J. Analysis of Programs for Parallel Processing[J]. IEEE Transactions on Electronic Computers, 1966, 15(5): 757-763.

[10] Zhai A, Steffan J G, Colohan C B, et al. Compiler and Hardware Support for Reducing the Synchronization of Speculative Threads[J]. ACM Transactions on Architecture and Code Optimization, 2008, 5(1): 1-33.

[11] Feng Min, Gupta R, Hu Yi. SpiceC: Scalable Parallelism via Implicit Copying and Explicit Commit[C]//Proceedings. of the 16th ACM Symposium on Principles and Practice of Parallel Programming. New York, USA: ACM Press, 2011: 69-80.

[12] 柯傳樂. 進程投機并行的運行時系統研究[D]. 北京: 中國科學院計算技術研究所, 2012.

編輯 任吉慧

Design and Optimization on Runtime System of Process-based Speculative Parallelization

LIU Lei1,2, LI Jing1,2, CHEN Li1, FENG Xiao-bing1

(1. Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100190, China; 2. University of Chinese Academy of Sciences, Beijing 100190, China)

Speculative parallelization is an important technique for solving the problem of parallelizing the legacy codes. However, the original runtime systems of speculative parallelization are confronted with serious performance problems, such as load unbalance, frequent communication, high conflict costs and frequent process creation/destruction overheads. This paper proposes a process-based speculative runtime system, using Implicit Single Program Multiple Data(ISPMD) method to partition and execute tasks in parallel, and implement a reused-process and delegated correctness checking method to reduce the overheads of frequent creation/destruction of speculative processes or the communication between them, which can improve the utilization of speculative processes. Besides, through a method that speculative tasks cooperate with manager task, the system can ensure the correct execution, even in the presence of exceptions with speculative processes. According to experimental results, the process-based speculative runtime system achieves 231% speedup improvement compared with other process-based speculative parallel systems.

software speculative parallelization; process-based speculative parallelization; runtime parallelization; delegated correctness checking; partitioning of parallel tasks

1000-3428(2014)03-0099-04

A

TP311.5

國家“863”計劃基金資助項目(2012AA010902);國家“973”計劃基金資助項目(2011CB302504)。

劉 雷(1980-),男,助理研究員、博士,主研方向:并行編譯,編譯優化;李 晶,博士研究生;陳 莉,副研究員;馮曉兵,研究員。

2012-11-15

2013-04-16 E-mail:liulei@ict.ac.cn

10.3969/j.issn.1000-3428.2014.03.020

猜你喜歡
進程程序系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 亚洲毛片网站| 国产精品美女在线| 无码丝袜人妻| 国产高清毛片| 欧美亚洲第一页| 91视频日本| 精品免费在线视频| 亚洲精品男人天堂| 欧美成人午夜影院| 91尤物国产尤物福利在线| 婷婷亚洲视频| 欧美性色综合网| 欧洲熟妇精品视频| 91欧美在线| 亚洲人在线| 欧美在线综合视频| 中文字幕在线日韩91| 午夜精品福利影院| 欧美成人午夜在线全部免费| 欧美国产在线看| 欧美影院久久| 欧美亚洲欧美区| 人人91人人澡人人妻人人爽| 国产成人在线小视频| 欧美日一级片| 天天激情综合| 国产午夜在线观看视频| 国产国产人成免费视频77777| 亚洲成人播放| 亚洲自偷自拍另类小说| 欧美区在线播放| 日韩av无码精品专区| 久久99蜜桃精品久久久久小说| 久操中文在线| 国产人人干| 国产精品网曝门免费视频| 精品国产免费观看| 超碰色了色| 亚洲国产欧美自拍| 久久精品国产精品一区二区| 三级国产在线观看| 好吊日免费视频| 久青草免费视频| 欧美福利在线播放| 亚洲永久色| 无码精油按摩潮喷在线播放 | 日韩精品毛片人妻AV不卡| 99这里只有精品6| 欧美国产精品不卡在线观看| 国产精品手机视频一区二区| …亚洲 欧洲 另类 春色| 欧美在线一二区| 91精品国产无线乱码在线| 国产精品亚欧美一区二区三区| 91系列在线观看| 88av在线看| 久久免费精品琪琪| 狼友视频一区二区三区| 亚洲婷婷在线视频| 极品av一区二区| 伊人色综合久久天天| 国产美女免费| 在线a视频免费观看| 青青极品在线| 97视频在线观看免费视频| 国产精品男人的天堂| 亚洲高清日韩heyzo| 亚洲熟妇AV日韩熟妇在线| 亚洲AV无码精品无码久久蜜桃| 亚洲福利视频网址| 色婷婷在线影院| 无码又爽又刺激的高潮视频| 国产屁屁影院| 国产精品va| 欧美亚洲日韩中文| 青草精品视频| igao国产精品| 国产精品网址你懂的| 尤物特级无码毛片免费| 青青国产成人免费精品视频| 国产91小视频在线观看| 欧美伦理一区|