專利名稱:基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)模擬方法,特別是以集群并行計(jì)算機(jī)系統(tǒng)為宿主機(jī),對計(jì)算 機(jī)體系結(jié)構(gòu)的不同配置方案進(jìn)行并行模擬評估,以便對計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案進(jìn)行優(yōu) 選的方法。
背景技術(shù):
在計(jì)算機(jī)系統(tǒng)的研制過程中,通常需要對計(jì)算機(jī)體系結(jié)構(gòu)的各種配置情況進(jìn)行評估, 使得在技術(shù)與成本限制下獲得最優(yōu)的設(shè)計(jì)方案。例如,片上多處理器系統(tǒng)(CMP)的片 上處理器核的數(shù)目及互連結(jié)構(gòu)、處理器上高速緩存(Cache)大小、塊大小和相聯(lián)性等重 要參數(shù)都有一定的可能范圍,參數(shù)取值不同可能導(dǎo)致性能的很大變化,需要綜合考慮這 些參數(shù)的值,才能獲得好的設(shè)計(jì)結(jié)果。又例如,計(jì)算機(jī)系統(tǒng)內(nèi)部互連網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)可 有多種方案,不同方案在性能特征方面存在很大差別。隨著計(jì)算機(jī)體系結(jié)構(gòu)的迅速發(fā)展, 影響性能的因素越來越多,設(shè)計(jì)空間(全部配置選項(xiàng)的所有可能的組合情況)日益增大。 對體系結(jié)構(gòu)設(shè)計(jì)人員來說,如何評估巨大的設(shè)計(jì)空間中的各個(gè)配置方案,獲得最優(yōu)的選 擇是重要問題。
計(jì)算機(jī)體系結(jié)構(gòu)模擬軟件(以下簡稱模擬器)在上述計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)過程中具 有廣泛用途。模擬器一般具有可配置、可復(fù)用的能力,可以對所模擬的計(jì)算機(jī)系統(tǒng)的各 項(xiàng)體系結(jié)構(gòu)參數(shù)或方案選項(xiàng)進(jìn)行配置,在現(xiàn)有的計(jì)算機(jī)(宿主機(jī))上模擬運(yùn)行真實(shí)基準(zhǔn) 測試程序或自動(dòng)生成的工作負(fù)載(以下統(tǒng)稱為Benchmark程序),獲得目標(biāo)系統(tǒng)采用該配 置方案時(shí)的性能數(shù)據(jù),為體系結(jié)構(gòu)設(shè)計(jì)決策提供參考。基于模擬器對計(jì)算機(jī)體系結(jié)構(gòu)進(jìn) 行評估已成為高性能計(jì)算機(jī)系統(tǒng)或關(guān)鍵器件研制周期中的重要環(huán)節(jié),設(shè)計(jì)人員廣泛使用 模擬器來評價(jià)體系結(jié)構(gòu)創(chuàng)新或改進(jìn)的效果。例如,IBM公司在其PowerPC和Cell處理器 研發(fā)中一直采用Mambo模擬器進(jìn)行驗(yàn)證和評估,在其BlueGene系列超級(jí)計(jì)算機(jī)研制中 采用BigSimulator來研究超級(jí)并行計(jì)算機(jī)系統(tǒng)的性能特性。AMD公司在其微處理器研制 中也基于SimNow模擬器進(jìn)行驗(yàn)證。Intel公司在內(nèi)部使用一些專門的模擬器如XTREM、 Simics等進(jìn)行設(shè)計(jì)驗(yàn)證。國內(nèi)中科院計(jì)算所在基于龍芯CPU的片上多核體系結(jié)構(gòu)研究中 也基于SimOS-Goodson來進(jìn)行測試驗(yàn)證(高翔等,基于龍芯CPU的多核全系統(tǒng)模擬器SimOS-Goodson,軟件學(xué)報(bào),2007)。 一些學(xué)者指出,為保持計(jì)算機(jī)系統(tǒng)的創(chuàng)新研究,模 擬技術(shù)的能力必須實(shí)現(xiàn)新的跨越,為此他們專門向美國NSF呼吁增加對模擬器技術(shù)的支 持(Kevin Skadron等,Challenges in Computer Architecture Evaluation, IEEE Computer, 2003)。
目前已有很多模擬器軟件系統(tǒng),如SimpleScalar (烕斯康星大學(xué))、SimOS (斯坦福 大學(xué))、Wattch (哈佛大學(xué))、PROTEUS (麻省理工大學(xué))、WWT II (威斯康辛大學(xué))、 MPI-SIM (加州大學(xué)洛杉磯分校)、BigSimulator (伊利諾伊大學(xué)香檳分校)、Simics (瑞 典Virtutech公司)、Mambo (IBM公司)、SimNow (AMD公司)、XTREM (普林斯頓大 學(xué)和Intel公司)、GEMS (威斯康辛大學(xué))、RSIM (萊斯大學(xué)、伊利諾伊大學(xué)等)、M5 (密 歇根大學(xué))、LSE (普林斯頓大學(xué))等?;谀M器進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)空間探索的方法通 常是由設(shè)計(jì)人員手工設(shè)定所模擬的目標(biāo)系統(tǒng)各個(gè)參數(shù)的具體取值和技術(shù)方案的具體選項(xiàng) (以下稱為模擬配置),然后在宿主計(jì)算機(jī)上基于模擬器模擬運(yùn)行Benchmark程序,獲得 該特定配置的性能數(shù)據(jù)(例如Benchmark程序在目標(biāo)計(jì)算機(jī)系統(tǒng)上的執(zhí)行時(shí)間,或者網(wǎng) 絡(luò)通信的帶寬,或者是系統(tǒng)吞吐率)。為對設(shè)計(jì)空間內(nèi)的多個(gè)候選配置進(jìn)行評價(jià),需要對 每個(gè)候選配置逐個(gè)進(jìn)行模擬評估。由于模擬器是采用軟件的方法來模擬硬件的行為,其 運(yùn)行Benchmark程序的時(shí)間很長,通常比在真實(shí)目標(biāo)機(jī)上運(yùn)行相同Benchmark程序的時(shí) 間大幾個(gè)數(shù)量級(jí),因此這種方法的時(shí)間開銷很大。例如,文獻(xiàn)(張福新等,基于SimpleScalar 的龍芯CPU模擬器Sim-Godson,計(jì)算機(jī)學(xué)報(bào),2007)報(bào)告了一種龍芯CPU的串行模擬 器,在3.0 GHz的Pentium 4微機(jī)上,模擬速度約為500K條指令每秒。而常用的CPU評 測Benchmark程序集SPEC CPU2000中的多數(shù)程序在使用標(biāo)準(zhǔn)Ref輸入集時(shí)都具有數(shù)千 億條指令,例如Mgrid程序約有640000000K條指令。據(jù)此推算,采用Sim-Godson模擬 器,在一臺(tái)3.0 GHz的Pentium 4微機(jī)上對龍芯CPU的一種配置進(jìn)行串行模擬,運(yùn)行完 整Mgrid程序所需時(shí)間約為14.8天;如果針對龍芯CPU的多種配置進(jìn)行模擬優(yōu)選,運(yùn)行 SPECCPU2000中全部26個(gè)程序所需時(shí)間將會(huì)長達(dá)數(shù)年。由于串行模擬的時(shí)間太長,通 常只能對設(shè)計(jì)空間內(nèi)的少數(shù)幾種配置情況進(jìn)行模擬評估,而這極有可能遺漏最優(yōu)的配置。 還有的方法不對完整Benchmark程序進(jìn)行模擬,而對Benchmark程序進(jìn)行縮減,或者對 Benchmark程序進(jìn)行采樣模擬,例如文獻(xiàn)(Michael Van Biesbrouck等,E伍cient Sampling Startup for Sampled Processor Simulation , 2005 International Conference on High Performance Embedded Architectures & Compilers, 2005)報(bào)告了一種處理器模擬的 Benchmark采樣方法,但其測試結(jié)果表明,沒有迸行預(yù)熱(Waramp)的采樣模擬方法得到的21個(gè)SPECCPU2000程序的每指令時(shí)鐘周期數(shù)(Cycle Per Instruction, CPI)的誤差 平均為16%到24%,對有的程序誤差可達(dá)40%以上,使用固定預(yù)熱大小的采樣模擬方法 對21個(gè)程序的平均誤差在4%,但對部分程序的誤差仍然達(dá)到17%?;谡`差這么明顯 的模擬結(jié)果進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)方案優(yōu)選,同樣有可能得不到最優(yōu)的配置。且設(shè)計(jì)者手工 進(jìn)行機(jī)器配置參數(shù)與模擬選項(xiàng)的設(shè)置、模擬數(shù)據(jù)的收集與比較,不僅使用不方便,而且 手工操作還容易出錯(cuò)。這是影響模擬器在體系結(jié)構(gòu)設(shè)計(jì)中的應(yīng)用效果的主要問題。
并行計(jì)算機(jī)系統(tǒng)相對于單處理器系統(tǒng)具有更強(qiáng)的計(jì)算能力與更大的存儲(chǔ)容量,如果
能夠利用并行計(jì)算機(jī)系統(tǒng)來做模擬器軟件的宿主機(jī)平臺(tái),可以有效地加速體系結(jié)構(gòu)模擬 評估的過程。但是,存在以下困難
(1) 目前絕大多數(shù)模擬器軟件是串行程序, 一個(gè)模擬器實(shí)例(指模擬器的運(yùn)行實(shí)體, 下同)只能運(yùn)行于單個(gè)處理器(核)上,無法利用并行計(jì)算機(jī)的多個(gè)處理器(核) 進(jìn)行并行模擬。而使用串行模擬器在單處理器系統(tǒng)上進(jìn)行模擬的時(shí)間開銷是非 常大的。
(2) 當(dāng)前部分模擬器軟件(如GEMS和M5)具有多線程并行版本, 一個(gè)模擬器實(shí) 例能夠使用片上多處理器系統(tǒng)的多個(gè)核,或者是對稱多處理器(SMP)系統(tǒng)的 多個(gè)處理器。例如文獻(xiàn)(KunWang等,Parallelization ofIBM Mambo System Simulator in functional modes, ACM SIGOPS Operating Systems Review, 2,008) 報(bào)告了 IBM中國研究中心開發(fā)的多線程并行版本的Mambo模擬器,對 OpenMP版的NAS Parallel Benchmark 3.2的模擬,在4核宿主機(jī)上的并行加速 比達(dá)到3.4。另一個(gè)典型例子是文獻(xiàn)(RobertE. Lantz, Parallel SimOS: Scalability and Performance for Large System Simulation,斯坦福大學(xué)博士論文,2007)中 報(bào)道的并行SimOS,其最大使用了64個(gè)處理器進(jìn)行模擬,這是有文獻(xiàn)報(bào)道的 使用宿主機(jī)規(guī)模最大的多線程模擬器,并且損失了部分模擬精度。由于片上多 處理器系統(tǒng)所包含的處理器核的數(shù)目通常不大,對稱多處理器系統(tǒng)所包含的處 理器的數(shù)目通常也很小(通常小于8個(gè),含8個(gè)以上處理器的對稱多處理器系 統(tǒng)非常昂貴),故多線程并行模擬器所能達(dá)到的并行度都不高,對體系結(jié)構(gòu)設(shè) 計(jì)方案模擬優(yōu)選時(shí)間的改善幅度非常有限。
(3) 目前確實(shí)出現(xiàn)了部分支持以分布存儲(chǔ)并行計(jì)算機(jī)為宿主機(jī)的消息傳遞模式并 行模擬器原型系統(tǒng),如WWTII、 MPI-SIM和BigSimulator。但是,分布存儲(chǔ) 并行模擬器通常不適于模擬高性能共享存儲(chǔ)和片上多處理器系統(tǒng)體系結(jié)構(gòu),原因是此類模擬器在模擬節(jié)點(diǎn)間的通信延遲很大,模擬緊耦合系統(tǒng)時(shí)的通信開銷巨大,導(dǎo)致模擬性能急劇下降(Robert E.Lantz, Parallel SimOS: Scalability andPerformance for Large System Simulation,斯坦福大學(xué)博士論文,2007)。即使對松耦合的集群并行計(jì)算機(jī)系統(tǒng)的模擬,由于并行離散事件模擬中存在很大的同步與通信開銷,這些并行模擬器系統(tǒng)的并行效率也受到很大的影響,目前有文獻(xiàn)報(bào)告的最好結(jié)果是BigSinmlator在256節(jié)點(diǎn)的集群并行計(jì)算機(jī)系統(tǒng)上獲得近150的并行加速比(Gengbin Zheng等,Simulation-based performanceprediction for large parallel machines , International Journal of ParallelProgramming, 2005),而目前世界超級(jí)計(jì)算機(jī)排行榜Top500中的大多數(shù)計(jì)算機(jī)系統(tǒng)的規(guī)模都在1024個(gè)處理器(核)以上(http://www.top500.org/)。此外,此類并行模擬器原型系統(tǒng)基本上都采用直接執(zhí)行模擬方式(R.C. Covington等,The Rice Parallel Processing Testbed, 1988 ACM SIGMETRICS Conference onMeasurement and Modeling of Computer Systems , 1988),實(shí)際上只實(shí)現(xiàn)了對并行應(yīng)用程序的模擬,而未真正實(shí)現(xiàn)對計(jì)算機(jī)體系結(jié)構(gòu)的模擬,其主要目標(biāo)是模擬并行應(yīng)用程序在并行計(jì)算機(jī)系統(tǒng)上的行為特征,為并行算法與并行程序設(shè)計(jì)禾口優(yōu)化提供驗(yàn)證方法(Gengbin Zheng , Achieving High Performance onExtremely Large Parallel Machines: Performance Prediction and Load Balancing,伊利諾伊大學(xué)博士論文,2005)。它們并不適用于支持計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案的優(yōu)選。
由于上述困難的存在,目前在體系結(jié)構(gòu)設(shè)計(jì)方案的優(yōu)選過程中,仍然普遍采用單處理器系統(tǒng)作為宿主機(jī)來進(jìn)行模擬測試。而隨著并行計(jì)算技術(shù)的發(fā)展,并行計(jì)算機(jī)系統(tǒng)日益在科研單位或工業(yè)部門得到普及,利用并行計(jì)算機(jī)系統(tǒng)來加速設(shè)計(jì)方案優(yōu)選過程已成
為現(xiàn)實(shí)需求。
體系結(jié)構(gòu)設(shè)計(jì)人員的需求是對大量設(shè)計(jì)方案進(jìn)行評價(jià),篩選出最優(yōu)的方案,這種需求的核心是體系結(jié)構(gòu)模擬的吞吐率——在盡可能短的時(shí)間內(nèi)完成給定設(shè)計(jì)方案集的評估,或者在給定時(shí)間段內(nèi)完成盡可能多的設(shè)計(jì)方案的評估。因此,可以轉(zhuǎn)變思路,采用吞吐率計(jì)算(Throughput Computing)的方法來實(shí)現(xiàn)對多個(gè)方案的并行評估,而不是試圖提高每個(gè)模擬方案評估的速度。只要以現(xiàn)有的串行或多線程并行模擬器軟件為基礎(chǔ),以并行計(jì)算機(jī)系統(tǒng)為模擬的宿主機(jī),通過設(shè)計(jì)相應(yīng)的實(shí)驗(yàn)控制方案及軟件程序,調(diào)度多個(gè)處理器上的模擬器軟件來對多個(gè)設(shè)計(jì)方案并行地進(jìn)行評估,就可以達(dá)到提高設(shè)計(jì)方案評
11估的吞吐率、加快總的評估進(jìn)度的目標(biāo)。這種方法的優(yōu)點(diǎn)包括(1)效率高,每個(gè)模擬器實(shí)例都以其既有方式在一個(gè)節(jié)點(diǎn)上運(yùn)行,不會(huì)因?yàn)椴⑿心M而有效率上的損失,可使用成千上萬處理器進(jìn)行并行模擬,獲得成千上萬倍的性能加速效果;(2)更快的速度意味著可以對更大的體系結(jié)構(gòu)設(shè)計(jì)空間進(jìn)行探索,增加找到更優(yōu)的設(shè)計(jì)方案的機(jī)會(huì)。(3)實(shí)施簡單,無需對體系結(jié)構(gòu)模擬器軟件進(jìn)行并行化,通常不需要對原模擬器軟件進(jìn)行修改,或者只需對原模擬器軟件的輸入輸出接口做少量修改,即可利用并行宿主機(jī)的多個(gè)節(jié)點(diǎn)的計(jì)算處理能力;(4)通用性好,無論原模擬器軟件是串行程序還是多線程并行程序,運(yùn)行于何種體系結(jié)構(gòu)的宿主機(jī)上,都可在本方法的框架中實(shí)施D因?yàn)槟壳凹翰⑿杏?jì)算機(jī)系統(tǒng)在學(xué)術(shù)研究機(jī)構(gòu)與工業(yè)部門使用最為廣泛,故以集群并行計(jì)算機(jī)系統(tǒng)為宿主機(jī)來進(jìn)行計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案并行模擬優(yōu)選能夠更好地滿足設(shè)計(jì)周期的需求。
根據(jù)專利文獻(xiàn)檢索,以往的專利與文獻(xiàn)中尚未見到以吞吐率計(jì)算方式實(shí)現(xiàn)基于集群并行計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案模擬優(yōu)選的相關(guān)報(bào)道。只有一些關(guān)于模擬器構(gòu)造方面的方法申請了專利,如專利號(hào)分別為98808090.7 、 200480008289.6、200480033145.6的中國專利、專利號(hào)PCT/US2004/004092的美國專利,專利號(hào)為PCT/JP361914/2003、 PCT/JP 376210/2002、 PCT/JP 360362/2002的日本專利。另有一些專利關(guān)注并行模擬器技術(shù),如專利號(hào)為5956261、 5442772的美國專利等。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提出一種采用集群并行計(jì)算機(jī)系統(tǒng)為宿主機(jī)來進(jìn)行計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案并行模擬優(yōu)選的方法,既減少評價(jià)優(yōu)選的時(shí)間,又提高選擇的準(zhǔn)確度,且操作方便。
本發(fā)明技術(shù)方案包括以下步驟
第一步,構(gòu)建具備遠(yuǎn)程命令執(zhí)行環(huán)境的集群并行計(jì)算機(jī)系統(tǒng)(以下簡稱集群系統(tǒng)),該集群系統(tǒng)由多個(gè)節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)都是一臺(tái)可獨(dú)立運(yùn)行的計(jì)算機(jī),各個(gè)節(jié)點(diǎn)間通過網(wǎng)絡(luò)設(shè)備相互連接。指定一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn),它負(fù)責(zé)與用戶交互,完成輸入輸出及模擬配置文件的生成、任務(wù)調(diào)度和結(jié)果分析。主控節(jié)點(diǎn)配有用戶終端設(shè)備,如鍵盤、鼠標(biāo)和顯示器。其它節(jié)點(diǎn)稱為模擬節(jié)點(diǎn),它們負(fù)責(zé)對具體的體系結(jié)構(gòu)配置進(jìn)行模擬,并將模擬結(jié)果發(fā)送給主控節(jié)點(diǎn)。為后面描述方便,設(shè)共有P個(gè)可用的模擬節(jié)點(diǎn),編號(hào)為l-戶。
主控節(jié)點(diǎn)和模擬節(jié)點(diǎn)上均安裝有操作系統(tǒng)、TCP/IP協(xié)議軟件,配置了網(wǎng)絡(luò)環(huán)境。主控節(jié)點(diǎn)和各個(gè)模擬節(jié)點(diǎn)都具有IP地址與主機(jī)名,并建立主機(jī)名與IP地址的映射關(guān)系,可通過主機(jī)名進(jìn)行訪問。同時(shí),在主控節(jié)點(diǎn)與模擬節(jié)點(diǎn)上安裝有配置遠(yuǎn)程命令執(zhí)行環(huán)境(例如RSH (Remote Shell)或SSH (Secure Shell)),使得主控節(jié)點(diǎn)與模擬節(jié)點(diǎn)上的模擬用戶間可以互相進(jìn)行遠(yuǎn)程文件復(fù)制,或者啟動(dòng)對方機(jī)器上的程序。
主控節(jié)點(diǎn)上安裝有全局配置程序、模擬配置文件生成程序、任務(wù)調(diào)度程序和結(jié)果分析程序。全局配置程序負(fù)責(zé)將全局性的配置設(shè)置記錄在全局配置文件中,以對整個(gè)優(yōu)選過程進(jìn)行控制。模擬配置文件生成程序根據(jù)全局配置文件生成覆蓋整個(gè)設(shè)計(jì)空間的模擬配置文件,每個(gè)模擬配置文件記錄體系結(jié)構(gòu)的一種配置,包含設(shè)計(jì)空間中每個(gè)參數(shù)的一個(gè)具體的取值,代表了設(shè)計(jì)空間的一個(gè)點(diǎn)。任務(wù)調(diào)度程序根據(jù)全局配置文件將模擬配置文件分發(fā)到各個(gè)模擬節(jié)點(diǎn),并調(diào)度各個(gè)模擬節(jié)點(diǎn)針對各自分配的模擬配置文件進(jìn)行模擬評估。結(jié)果分析程序接收各個(gè)模擬節(jié)點(diǎn)上的模擬結(jié)果,進(jìn)行統(tǒng)計(jì)分析,篩選出最優(yōu)配置。
模擬節(jié)點(diǎn)上安裝有目標(biāo)體系結(jié)構(gòu)模擬器和Benchmark程序,模擬節(jié)點(diǎn)收到主控節(jié)點(diǎn)向它分配的模擬配置文件后,根據(jù)從模擬配置文件中獲得各個(gè)體系結(jié)構(gòu)參數(shù)的取值,在模擬器上模擬運(yùn)行Benchmark程序,得到目標(biāo)體系結(jié)構(gòu)采用當(dāng)前配置情況下的性能數(shù)據(jù)。
第二步,主控節(jié)點(diǎn)執(zhí)行全局配置程序,進(jìn)行全局性的配置設(shè)置,將設(shè)置結(jié)果記錄在全局配置文件中,全局配置文件包含模擬節(jié)點(diǎn)列表域、模擬器軟件域、體系結(jié)構(gòu)參數(shù)域和目標(biāo)性能參數(shù)域。全局配置程序進(jìn)行配置設(shè)置的方法是
2.1在一次體系結(jié)構(gòu)方案模擬優(yōu)選過程開始時(shí),集群系統(tǒng)中有些節(jié)點(diǎn)可能因?yàn)榘l(fā)生故障、或者因?yàn)檫\(yùn)行其它任務(wù)而不能用做本次模擬評估任務(wù)的模擬節(jié)點(diǎn)。全局配置程序指定當(dāng)前可用做模擬節(jié)點(diǎn)的節(jié)點(diǎn),并將各個(gè)節(jié)點(diǎn)的主機(jī)名記錄在全局配置文件的模擬節(jié)點(diǎn)列表域中。
2.2任務(wù)調(diào)度程序在調(diào)度模擬節(jié)點(diǎn)上的模擬器執(zhí)行Benchmark程序時(shí),需要知道模擬節(jié)點(diǎn)上的模擬器軟件和Benchmark程序的名稱與路徑,還有Benchmark程序運(yùn)行時(shí)所需的命令行參數(shù)(這些參數(shù)是應(yīng)用相關(guān)的參數(shù)而非體系結(jié)構(gòu)參數(shù),例如問題規(guī)模等)。因此,全局配置程序需要將模擬器軟件的完整路徑(含文件名)、Benchmark程序的完整路徑(含文件名)以及運(yùn)行Benchmark程序時(shí)的命令行參數(shù)記錄在全局配置文件的模擬器軟件域中。
2.3目標(biāo)體系結(jié)構(gòu)模擬器運(yùn)行時(shí),需要以模擬配置文件作為輸入,該文件記錄了本次模擬的目標(biāo)計(jì)算機(jī)系統(tǒng)的各個(gè)體系結(jié)構(gòu)參數(shù)的具體配置。模擬配置文件生成程序自動(dòng)生成可覆蓋整個(gè)體系結(jié)構(gòu)設(shè)計(jì)空間的模擬配置文件,它需要從全局配置文件中獲得各個(gè)體系結(jié)構(gòu)參數(shù)的取值范圍,故由全局配置程序?qū)Ⅲw系結(jié)構(gòu)設(shè)計(jì)空間所包含的配置參數(shù)的名稱及其取值范圍記錄在全局配置文件的體系結(jié)構(gòu)參數(shù)域。體系結(jié)構(gòu)參數(shù)域包含三個(gè)子域枚舉型參數(shù)子域、整數(shù)型參數(shù)子域和浮點(diǎn)型參數(shù)子域。設(shè)體系結(jié)構(gòu)設(shè)計(jì)空間中包含《個(gè)
枚舉型參數(shù)ei,e2,...,^ ,第《個(gè)枚舉型參數(shù)~ (Kc^/:)可取" 個(gè)枚舉值
^(1)A(2),…,ea(Wa),則在枚舉型參數(shù)子域中記錄每個(gè)枚舉參數(shù)^的名稱及其全部枚舉值的集合k(l),ea(2),…,e。("a"。設(shè)模擬器需要Z個(gè)整數(shù)型參數(shù)/^2,...,^,第〃個(gè)整數(shù)參
數(shù)^ (1《P《£ )的下界為/Zo,,上界為/"巧,遞增步長為ZS^;^ ( /Zo, 、 /L^和/5^/^均為整數(shù),且ZS^;^〉0),則在整數(shù)型參數(shù)子域中記錄每個(gè)整數(shù)參數(shù)的名稱、上下界及步長。假設(shè)模擬器需要似個(gè)浮點(diǎn)型參數(shù)/1,/2,...,/^,第y個(gè)浮點(diǎn)參數(shù)力(lSy^M)的下界為FZoWy,上界為尸C7&,遞增步長為FSfe^ (其中FZo^、 F[/^和F&e;^均為整數(shù),且,5^&>0),則在浮點(diǎn)型參數(shù)子域中記錄每個(gè)浮點(diǎn)參數(shù)的名稱、上下界及步長。
通常對每個(gè)枚舉型參數(shù)、整數(shù)型參數(shù)和浮點(diǎn)型參數(shù)都使用一行來記錄,以方便解析。
2.4結(jié)果分析程序?qū)δM結(jié)果進(jìn)行自動(dòng)分析,優(yōu)選出最優(yōu)的結(jié)果。為對模擬結(jié)果進(jìn)行自動(dòng)分析,需要知道用戶究竟關(guān)心模擬結(jié)果中的哪些性能參數(shù),這些參數(shù)的值是大好,還是小好。因此,全局配置程序?qū)⒂脩絷P(guān)心的這些目標(biāo)性能參數(shù)及其正負(fù)向?qū)傩栽O(shè)置在全局配置文件的目標(biāo)性能參數(shù)域。如果參數(shù)值越大說明對應(yīng)的體系結(jié)構(gòu)配置越好,則這種參數(shù)具有正向?qū)傩裕蝗绻麉?shù)值越大說明對應(yīng)體系結(jié)構(gòu)配置越差,則這種參數(shù)具有負(fù)向?qū)傩?。例如,模擬運(yùn)行Benchmark程序獲得的浮點(diǎn)性能、存儲(chǔ)帶寬、網(wǎng)絡(luò)帶寬等參數(shù)越大越好,屬于正向參數(shù),其正負(fù)向?qū)傩灾翟O(shè)為1;而模擬運(yùn)行Benchmark程序獲得的執(zhí)行時(shí)間、CPI、 Cache失效率、網(wǎng)絡(luò)延遲等參數(shù)越小越好,屬于負(fù)向參數(shù),其正負(fù)向?qū)傩栽O(shè)值為-1。設(shè)共有及個(gè)目標(biāo)性能參數(shù)尸M,戶[/2,…,尸f^,全局配置程序在全局配置文件的目標(biāo)性能參數(shù)域中記錄各個(gè)目標(biāo)性能參數(shù)的名稱與正負(fù)向?qū)傩?^1,/^2,...,/>&,各個(gè)
目標(biāo)性能參數(shù)的名稱與模擬器輸出文件中對應(yīng)參數(shù)的名稱要保持一致。
第三步,主控節(jié)點(diǎn)上的模擬配置文件生成程序從全局配置文件的體系結(jié)構(gòu)參數(shù)域中獲得體系結(jié)構(gòu)設(shè)計(jì)空間包含的各個(gè)參數(shù)的名稱及其取值范圍,生成所有的模擬配置文件。每個(gè)模擬配置文件對應(yīng)目標(biāo)體系結(jié)構(gòu)設(shè)計(jì)空間的一個(gè)具體配置,它包含K +丄+ M行(K是枚舉型參數(shù)的數(shù)目,£整數(shù)型參數(shù)的數(shù)目,M是浮點(diǎn)型參數(shù)的數(shù)目),每一行記錄一個(gè)體系結(jié)構(gòu)參數(shù)的名稱及其當(dāng)前取值。模擬配置文件生成過程是
3.1根據(jù)全局配置文件產(chǎn)生一個(gè)模擬配置文件生成腳本。步驟是
3.1.1創(chuàng)建一個(gè)腳本程序,向腳本程序中寫入初始化代碼將模擬配置文件編號(hào)
14F,7e一/"設(shè)為1。
3.1.2解析全局配置文件,獲得全部枚舉型參數(shù)£1^2,...,~的名稱及其枚舉集合
A, A,...五k。對每一個(gè)枚舉型參數(shù),寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)
語句的功能是枚舉該參數(shù)所有的取值。除第一條循環(huán)語句外,每次寫入的循環(huán)語句都要位于前一次寫入的循環(huán)語句結(jié)構(gòu)的內(nèi)部。這樣就得到了一個(gè)K層的緊嵌套循環(huán)。
3丄3解析全局配置文件,獲得全部整數(shù)型參數(shù)^^...,^的名稱、下界
/ZoM/p/Zm^...,/^^ 、上界/6^,/6^,…,/6^和遞增步長ZS^^,/S^A,…,/5^A 。對每
一個(gè)整數(shù)型參數(shù)^ (1《〃S丄),寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句
的功能是枚舉該整數(shù)型參數(shù)所有的取值,以一個(gè)整數(shù)為索引變量,索引變量的下界是/丄rn^,上界是/t/;^,步長為/Sfei^。其中第一次寫入的循環(huán)語句位于步驟3丄2生成的
嵌套循環(huán)的最內(nèi)層循環(huán)內(nèi),其后每次寫入的循環(huán)語句都位于前一次寫入的循環(huán)語句結(jié)構(gòu)的內(nèi)部。該步驟在步驟3丄2得到的最內(nèi)層循環(huán)中加入了一個(gè)丄層的緊嵌套循環(huán)。
3.1.4解析全局配置文件,獲得全部浮點(diǎn)型參數(shù)/i,/2,...,/M的名稱、下界^Zcw"FZow2…,尸丄OT^ 、上界7^^1,^7/ 2,...,尸^//^和遞增步長7^印1,尸&^2,...,尸1^;^ 。
因?yàn)槌绦蛑幸话悴恢С忠愿↑c(diǎn)變量作為循環(huán)的索引變量,需要做專門處理。對每個(gè)浮點(diǎn)參數(shù)y; (1S;^i/),先計(jì)算iV,(Ft^-i^ow》/F5^;^ (tV,取整數(shù));然后,寫入一
個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句以一個(gè)整數(shù)為索引變量,索引變量的下界是l,上界是A^,步長是l。其中第一次寫入的循環(huán)語句位于步驟3丄3得到嵌套循環(huán)
的最內(nèi)層循環(huán)內(nèi),其后每次寫入的循環(huán)語句都位于前一次寫入循環(huán)語句結(jié)構(gòu)的內(nèi)部。該步驟在步驟3丄3得到的最內(nèi)層循環(huán)中加入了一個(gè)M層的嵌套循環(huán)。
3.1.5在步驟3丄4得到的模擬配置文件生成腳本中的最內(nèi)層循環(huán)內(nèi),寫入功能代碼塊,該功能代碼塊的流程是
(1) 創(chuàng)建編號(hào)為尸^_/^的模擬配置文件,模擬配置文件的名字都以固定的標(biāo)識(shí)符開頭,并將其編號(hào)作為文件名的一部分。
(2) 對每個(gè)枚舉型模擬配置參數(shù),在當(dāng)前模擬配置文件中寫入一行語句,記錄該枚舉參數(shù)的當(dāng)前值。配置文件生成腳本執(zhí)行時(shí),由于在該語句外有多層嵌套循環(huán),該語句會(huì)被多次迭代執(zhí)行,枚舉參數(shù)當(dāng)前取值就是嵌套循環(huán)的當(dāng)次迭代時(shí)該枚舉參數(shù)對應(yīng)的索引變量的值。
(3) 對每個(gè)整數(shù)型模擬配置參數(shù),在當(dāng)前模擬配置文件中寫入一行,記錄該整數(shù)參數(shù)的當(dāng)前值。整數(shù)參數(shù)當(dāng)前取值就是嵌套循環(huán)的當(dāng)次迭代時(shí)該整數(shù)參數(shù)對應(yīng)的索 引變量的值。
(4) 對每個(gè)浮點(diǎn)型模擬配置參數(shù),首先計(jì)算其當(dāng)前取值,然后在當(dāng)前模擬配置 文件中寫入一行,記錄其當(dāng)前值。
(5) 關(guān)閉當(dāng)前模擬配置文件,尸^_/0的值增加1。
3.1.6在配置文件生成腳本的最后寫入代碼,功能是將生成的不同模擬配置文件的數(shù) 目記錄到一個(gè)文件中。
3.2執(zhí)行模擬配置文件生成腳本,生成全部模擬配置文件,存儲(chǔ)在主控節(jié)點(diǎn)上,每個(gè) 模擬配置文件按其生成的順序編號(hào)。模擬配置文件生成腳本的執(zhí)行流程是
3.2.1初始化,將模擬配置文件初始編號(hào)尸^_//)的值設(shè)為1。
3.2.2開始執(zhí)行嵌套循環(huán)的一次迭代,創(chuàng)建編號(hào)為F//e—/Z)的模擬配置文件SCV,、/fl 。
嵌套循環(huán)的每一次迭代是其每個(gè)循環(huán)索引變量取得一個(gè)具體的值時(shí)的執(zhí)行過程。
3.2.3對每個(gè)枚舉型模擬配置參數(shù),在模擬配置文件SC^—,d中寫入一行,記錄該枚
舉參數(shù)的當(dāng)前值,形式為枚舉參數(shù)名=枚舉參數(shù)當(dāng)前取值。
3.2.4對每個(gè)整數(shù)型模擬配置參數(shù),在當(dāng)前模擬配置文件SC,,,、^中寫入一行,記錄
該整數(shù)參數(shù)的當(dāng)前值,形式為整數(shù)參數(shù)名=整數(shù)參數(shù)當(dāng)前取值。
3.2.5對每個(gè)浮點(diǎn)型模擬配置參數(shù)《(1Sy《M),首先計(jì)算其當(dāng)前取值。設(shè)執(zhí)行嵌
套循環(huán)當(dāng)次迭代時(shí)該浮點(diǎn)參數(shù)對應(yīng)的索引變量的取值為尸//血"則浮點(diǎn)型參數(shù)的當(dāng)前取
值為F丄o^+FS嘩J(F/似Xy-1)。然后,在模擬配置文件SC^」d中寫入一行,形式為
浮點(diǎn)參數(shù)名=浮點(diǎn)參數(shù)當(dāng)前取值。
3.2.6關(guān)閉模擬配置文件SC^一w, F&」D的值增加1。
3.2.7如果已執(zhí)行完嵌套循環(huán)的所有迭代,則轉(zhuǎn)步驟3.2.8,否則轉(zhuǎn)步驟3.2.2。 3.2.8創(chuàng)建一個(gè)文件,在其中寫入/^化_/£>-1的值。
上述過程遍歷了設(shè)計(jì)空間的每一個(gè)點(diǎn),對每一個(gè)點(diǎn),采用該點(diǎn)對應(yīng)的全部體系結(jié)構(gòu) 參數(shù)的當(dāng)前取值生成一個(gè)配置文件,并且按照模擬配置文件生成的順序給其編號(hào)。因此, 所生成的全部模擬配置文件能夠完全覆蓋目標(biāo)體系結(jié)構(gòu)設(shè)計(jì)空間,且不會(huì)出現(xiàn)重復(fù)。
第四步,任務(wù)調(diào)度程序?qū)⒛M評估任務(wù)分配給各個(gè)節(jié)點(diǎn),并控制各個(gè)模擬節(jié)點(diǎn)并行 地進(jìn)行模擬評估。4.1模擬評估任務(wù)分配。由于各個(gè)模擬節(jié)點(diǎn)的處理能力相同,為了有效利用所有模擬 節(jié)點(diǎn),實(shí)現(xiàn)負(fù)載平衡,應(yīng)保證每個(gè)模擬節(jié)點(diǎn)上的模擬任務(wù)基本相等。每個(gè)模擬任務(wù)的執(zhí)
行過程就是模擬器軟件針對一個(gè)模擬配置進(jìn)行模擬評估的過程,故每個(gè)模擬任務(wù)與一個(gè) 模擬配置文件對應(yīng)。通常對不同配置進(jìn)行模擬的時(shí)間開銷大致相等,故要求在各個(gè)模擬 節(jié)點(diǎn)上盡可能平均地分配模擬配置文件。循環(huán)分布策略是可以達(dá)到這一要求的一種策略, 其方法是-
設(shè)共有p個(gè)可用模擬節(jié)點(diǎn),iV個(gè)模擬配置文件(iV> )。若尸|iV OV能被尸整除),
則模擬節(jié)點(diǎn)^ (is7^p)上分配的模擬配置文件集合是(sc;, sc,+P, sc"+2P,…,
SC。+fph否則,令;V除以p的余數(shù)為f (f-0),則模擬節(jié)點(diǎn)K (l^T/^e)上分配
的配置文件集合是{, sc;+尸,sc^尸,…,sq+^p),模擬節(jié)點(diǎn)『"(£<77^尸)上
7
表示不大于
分配的配置文件集合是{sc。, SC"+p, sc。+2" ..., sc |AM}。其中
L尸」
!的最大整數(shù)。
p
任務(wù)調(diào)度程序根據(jù)上述分配策略,將模擬配置文件從主控節(jié)點(diǎn)分發(fā)到各個(gè)模擬節(jié)點(diǎn), 即完成了模擬評估任務(wù)分配。注意在主控節(jié)點(diǎn)上要保留所有模擬配置文件的副本。
4.2控制各個(gè)模擬節(jié)點(diǎn)并行地進(jìn)行模擬評估。任務(wù)調(diào)度程序調(diào)度各個(gè)模擬節(jié)點(diǎn)啟動(dòng)體 系結(jié)構(gòu)模擬器,以各自分配的模擬配置文件為目標(biāo)計(jì)算機(jī)體系結(jié)構(gòu)配置,模擬運(yùn)行 Benchmark程序,得到該配置情況下Benchmark程序運(yùn)行的性能數(shù)據(jù),記錄在結(jié)果文件 中,并將結(jié)果文件發(fā)送給主控節(jié)點(diǎn)。具體步驟是
4.2.1任務(wù)調(diào)度程序在主控節(jié)點(diǎn)上生成模擬控制腳本。該模擬控制腳本程序的流程是..
(a) 搜索本模擬節(jié)點(diǎn)上一個(gè)尚未評估過的的模擬配置文件,記錄其編號(hào)
(b) 執(zhí)行模擬器軟件,目標(biāo)體系結(jié)構(gòu)采用當(dāng)前模擬配置文件中的配置,對 Benchmark程序進(jìn)行模擬測試,模擬結(jié)果輸出到編號(hào)為F&一/Z)的結(jié)果文件中。
(c) 將生成的模擬結(jié)果文件發(fā)送到主控節(jié)點(diǎn)。
(d) 若尚未評估完本節(jié)點(diǎn)上的全部模擬配置文件,轉(zhuǎn)步驟(a);否則流程結(jié)束。 4.2.2任務(wù)調(diào)度程序?qū)⒛M控制腳本從主控節(jié)點(diǎn)上復(fù)制到各個(gè)模擬節(jié)點(diǎn)上。
4.2.3任務(wù)調(diào)度程序啟動(dòng)各個(gè)模擬節(jié)點(diǎn)上的模擬控制腳本;各個(gè)模擬節(jié)點(diǎn)執(zhí)行模擬控制腳本,對各個(gè)模擬配置文件進(jìn)行模擬評估,將每個(gè)模擬配置文件的評估結(jié)果記錄在一 個(gè)結(jié)果文件中,結(jié)果文件的編號(hào)與模擬配置文件的編號(hào)相同,每評估完一個(gè)模擬配置文 件就將其結(jié)果文件發(fā)送給主控節(jié)點(diǎn)。
第五步,主控節(jié)點(diǎn)上的結(jié)果分析程序不斷地搜索模擬節(jié)點(diǎn)發(fā)來的模擬結(jié)果文件,進(jìn) 行統(tǒng)計(jì),篩選出針對各個(gè)性能參數(shù)的最優(yōu)配置參數(shù)值,最后輸出報(bào)告。步驟是
5.1進(jìn)行初始化工作。具體是
(i) 解析全局配置文件,初始化目標(biāo)性能參數(shù)列表PM,P",...,戶K,并為每個(gè) 目標(biāo)性能參數(shù)i5^ (iSASi )創(chuàng)建一個(gè)數(shù)組結(jié)構(gòu)戶5U,,用于存儲(chǔ)該性能參數(shù)值最 優(yōu)時(shí)對應(yīng)的模擬配置參數(shù)值,該數(shù)組包含《+ £ + M個(gè)元素,其中第h個(gè)元素P5T,[力] 對應(yīng)第h個(gè)模擬配置參數(shù)。
(ii) 從記錄文件中獲得總模擬配置數(shù)SCowW ,初始化計(jì)數(shù)器J C卯W"的值為1。
(iii) 任意選取一個(gè)模擬結(jié)果文件,采用其中的性能參數(shù)值來初始化目標(biāo)性能參 數(shù)列表/^/1,尸^/2,...,尸^//(,采用與該模擬結(jié)果文件編號(hào)相同的模擬配置文件中的配置
參數(shù)值來初始化每個(gè)數(shù)組尸sc》(i s ;i s i )。
5.2搜索一個(gè)尚未統(tǒng)計(jì)過的的模擬結(jié)果文件Oti Fz7e,從中獲得全部性能參數(shù)的值 O嗎,0,Pt/2O^PC^
5.3分別將0^"1,0,/>"2,...,0 ^^與已記錄的對應(yīng)最優(yōu)性能參數(shù)進(jìn)行比較,如果 01 (/1,0^ 72,...,0^&中的一個(gè)或多個(gè)優(yōu)于已記錄的對應(yīng)最優(yōu)性能參數(shù),則轉(zhuǎn)5.4;否 則,轉(zhuǎn)5.5。
5.4更新最優(yōu)性能參數(shù)和對應(yīng)的模擬配置參數(shù)的記錄,過程如下
(A) 找到與結(jié)果文件Crti^7e編號(hào)相同的模擬配置文件CHSCFz7e 。
(B) 解析CHSO^/e中模擬配置參數(shù)的值,記錄在臨時(shí)數(shù)組fcmp5C中。
(c)初始化,置迭代索引變量;i的值為1。
(D) 若戶^=1且Q^f/p戶^,或者PP^;1且O^C^〈Pf^,則轉(zhuǎn)(E);否
貝U,轉(zhuǎn)(i)。
(E) 置戶仏=0/戶仏。
(F) 初始化,置迭代索引變量h的值為1。 (G )置尸Sq [/ ] = rewpSC [h]。
(H)若A〈K +丄+ M,則h的值增加l,轉(zhuǎn)(G);否則,退出迭代,轉(zhuǎn)(1)。
18(I)若;i〈R,則A的值增加1,轉(zhuǎn)(D);否則,步驟5.4結(jié)束。 5.5計(jì)數(shù)器變量AOn/"fer的值增加1。
5.6進(jìn)行判斷,如果i Ow"^"〈SCo朋"則轉(zhuǎn)5.2;否則,轉(zhuǎn)5.7。
5.7輸出最終獲得的各個(gè)最優(yōu)性能參數(shù)/>^/1,/>[/2,...,尸^;以及它們對應(yīng)的模擬配置參
數(shù)的值。
與現(xiàn)有技術(shù)相比,本發(fā)明有以下技術(shù)優(yōu)點(diǎn)-
1. 通過良好的過程設(shè)計(jì)及一系列專用程序的配合,實(shí)現(xiàn)了模擬配置文件的自動(dòng)生 成、模擬任務(wù)的自動(dòng)調(diào)度和模擬結(jié)果的自動(dòng)分析,極大地方便了用戶操作。模擬 配置文件自動(dòng)生成保證了能夠完全覆蓋模擬配置空間,并且沒有重復(fù)的點(diǎn)。模擬 任務(wù)的調(diào)度通過均勻分配模擬配置文件,使各個(gè)模擬節(jié)點(diǎn)上的模擬評估任務(wù)基本 相等,基本實(shí)現(xiàn)了負(fù)載平衡。
2. 可擴(kuò)展性好。主控節(jié)點(diǎn)與各個(gè)模擬節(jié)點(diǎn)之間需要通過網(wǎng)絡(luò)傳輸?shù)闹挥心M配置文 件、結(jié)果輸出文件和一些遠(yuǎn)程執(zhí)行命令,通信量很小。主控節(jié)點(diǎn)上的全局配置程 序、模擬配置文件生成程序、任務(wù)調(diào)度程序、結(jié)果分析程序的開銷都很小,相對 于模擬器軟件的執(zhí)行開銷來說幾乎可以忽略不計(jì)。因此, 一個(gè)主控節(jié)點(diǎn)即可協(xié)調(diào) 控制成千上萬模擬節(jié)點(diǎn)來并行地進(jìn)行配置方案評估。
3. 并行效率高。 一個(gè)模擬節(jié)點(diǎn)上的模擬器運(yùn)行期間不需要與其它模擬節(jié)點(diǎn)上的模擬 器進(jìn)行同步與通信,不存在額外的并行開銷,每個(gè)模擬器在模擬節(jié)點(diǎn)上的運(yùn)行效 率均不會(huì)降低,總體上能夠獲得線性并行加速比,即采用戶個(gè)模擬節(jié)點(diǎn)就能使模 擬優(yōu)選過程的時(shí)間縮短為原來的l/戶。例如,使用1000個(gè)處理器,可以將原來 需要1年才能完成的計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案優(yōu)選工作在9小時(shí)內(nèi)完成。
4. 由于體系結(jié)構(gòu)設(shè)計(jì)方案優(yōu)選速度的大幅度提高,從而可以對更大的體系結(jié)構(gòu)設(shè)計(jì) 空間進(jìn)行探索,有利于找到更優(yōu)的體系結(jié)構(gòu)設(shè)計(jì)方案。
綜上所述,本發(fā)明基于集群系統(tǒng),采取"模擬配置自動(dòng)生成、任務(wù)自動(dòng)調(diào)度、吞吐率
式并行模擬、模擬結(jié)果自動(dòng)篩選"的方式,以較小的成本實(shí)現(xiàn)了對計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)空
間的并行模擬評估,大大加快了對計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)空間進(jìn)行模擬評估的速度,并提 高了體系結(jié)構(gòu)設(shè)計(jì)方案優(yōu)選過程的自動(dòng)化程度。
圖1是本發(fā)明第一步構(gòu)建的集群系統(tǒng)的物理結(jié)構(gòu)圖。 圖2是本發(fā)明集群系統(tǒng)的軟件部署圖。圖3是本發(fā)明的總流程圖。
圖4是全局配置程序的流程圖。
圖5是模擬配置文件生成程序產(chǎn)生模擬配置文件生成腳本的流程圖。
圖6是模擬配置文件生成腳本的執(zhí)行流程圖。
圖7是任務(wù)調(diào)度程序的流程圖。
圖8是模擬節(jié)點(diǎn)上模擬控制腳本的執(zhí)行流程圖。
圖9是結(jié)果分析程序的流程圖。
具體實(shí)施方法
圖1是發(fā)明第一步構(gòu)建的集群系統(tǒng)的物理結(jié)構(gòu)圖。根據(jù)功能將集群的節(jié)點(diǎn)分為主控 節(jié)點(diǎn)和模擬節(jié)點(diǎn)。主控節(jié)點(diǎn)和模擬節(jié)點(diǎn)均包含處理器、主存、磁盤和網(wǎng)絡(luò)接口設(shè)備。主 控節(jié)點(diǎn)配有輸入輸出終端。主控節(jié)點(diǎn)與模擬節(jié)點(diǎn)之間通過互連網(wǎng)絡(luò)設(shè)備相連,互連網(wǎng)絡(luò) 可以是以太網(wǎng)、Myrinet、 Infiniband,或是其它類型的網(wǎng)絡(luò)。
圖2是本發(fā)明集群系統(tǒng)的軟件部署圖。在主控節(jié)點(diǎn)上安裝有操作系統(tǒng)軟件、網(wǎng)絡(luò) TCP/IP軟件、遠(yuǎn)程命令執(zhí)行軟件、全局配置程序,模擬配置文件生成程序、任務(wù)調(diào)度程 序和結(jié)果分析程序。其中前三者是通用軟件,可從一些公開發(fā)行的軟件包中獲得;后四 者是本發(fā)明的專用軟件。在模擬節(jié)點(diǎn)上安裝有操作系統(tǒng)軟件、TCP/IP網(wǎng)絡(luò)軟件、遠(yuǎn)程命 令執(zhí)行軟件、體系結(jié)構(gòu)模擬器、Benchmark程序。其中前三者是通用軟件,可從一些公 開發(fā)行的軟件包中獲得。體系結(jié)構(gòu)模擬器和Benchmark程序是體系結(jié)構(gòu)設(shè)計(jì)者根據(jù)需要 選定的專門軟件,其中Benchmark程序應(yīng)該是已編譯過的可直接在模擬器上運(yùn)行的程序。
圖3所示是本發(fā)明總流程圖。
主控節(jié)點(diǎn)端的總流程
步驟S301,全局配置程序進(jìn)行全局配置設(shè)置,并將所產(chǎn)生的全集配置信息記錄在全 局配置文件中。
步驟S302,模擬配置文件生成程序生成所有的模擬配置文件,并按照模擬配置文件 生成的順序給其編號(hào)。
步驟S303,任務(wù)調(diào)度程序?qū)⒛M配置文件從主控節(jié)點(diǎn)分發(fā)到各個(gè)模擬節(jié)點(diǎn)上。 步驟S304,任務(wù)調(diào)度程序生成模擬控制腳本,并將其分發(fā)到各個(gè)模擬節(jié)點(diǎn)上。 步驟S305,任務(wù)調(diào)度程序啟動(dòng)各個(gè)模擬節(jié)點(diǎn)上的模擬控制腳本。 步驟S306,結(jié)果分析程序搜索一個(gè)尚未分析過的模擬結(jié)果文件,進(jìn)行統(tǒng)計(jì)分析。 步驟S307,結(jié)果分析程序判斷是否已分析完全部的模擬結(jié)果文件,若尚未分析完,
20則轉(zhuǎn)步驟S306;否則,轉(zhuǎn)步驟S308。
步驟S308,輸出最終獲得的各個(gè)最優(yōu)性能參數(shù)及其對應(yīng)的模擬配置參數(shù)的值,流程 結(jié)束。
每個(gè)模擬節(jié)點(diǎn)端的總流程-
步驟S309,模擬節(jié)點(diǎn)響應(yīng)主控節(jié)點(diǎn)上任務(wù)調(diào)度程序的文件分發(fā)命令,接收屬于本節(jié) 點(diǎn)的模擬配置文件子集。
步驟S310,模擬節(jié)點(diǎn)響應(yīng)主控節(jié)點(diǎn)上任務(wù)調(diào)度程序的文件復(fù)制命令,接收模擬控制 腳本。
步驟S311,模擬節(jié)點(diǎn)響應(yīng)主控節(jié)點(diǎn)上任務(wù)調(diào)度程序發(fā)出的遠(yuǎn)程執(zhí)行命令,執(zhí)行模擬 控制腳本,該腳本程序控制對本節(jié)點(diǎn)所分配的模擬配置文件逐個(gè)進(jìn)行模擬評估,每個(gè)模 擬配置文件的評估結(jié)果記錄在一個(gè)與模擬配置文件同編號(hào)的結(jié)果文件中,并將結(jié)果文件 發(fā)送給主控節(jié)點(diǎn)。當(dāng)完成本節(jié)點(diǎn)全部模擬配置文件的模擬評估后,流程結(jié)束。
圖4所示是全局配置程序的流程圖。主要過程
步驟S401,接受輸入的參與本次模擬評估任務(wù)的各個(gè)模擬節(jié)點(diǎn)的主機(jī)名,記錄在全
局配置文件的模擬節(jié)點(diǎn)列表域中。
步驟S402,設(shè)置模擬節(jié)點(diǎn)上的模擬器軟件和Benchmark程序的名稱和路徑,設(shè)置
Benchmark程序運(yùn)行時(shí)所需的命令行參數(shù),記錄在在全局配置文件的模擬器軟件域中。
步驟S403,設(shè)置設(shè)計(jì)空間所包含的所有配置參數(shù)名及其取值范圍,在全局配置文件 的體系結(jié)構(gòu)參數(shù)域?qū)懭肴齻€(gè)子域枚舉型參數(shù)子域、整數(shù)型參數(shù)子域和浮點(diǎn)型參數(shù)子域。 步驟S404,設(shè)置用戶關(guān)心的目標(biāo)性能參數(shù)及其正負(fù)向?qū)傩?。設(shè)共有i 個(gè)用戶感興趣 的性能參數(shù)PM,尸f/2,…,尸仏,如果Pf/義U《義S及)為正向參數(shù),則其正負(fù)向?qū)傩?尸J^-1;如果戶C^為負(fù)向參數(shù),則其正負(fù)向?qū)傩允琟=-1。在全局配置文件的目標(biāo)性能 參數(shù)域中記錄各個(gè)目標(biāo)性能參數(shù)的名稱與正負(fù)向?qū)傩浴S涗浲瓿珊?,過程結(jié)束。
圖5所示是模擬配置文件生成程序產(chǎn)生模擬配置文件生成腳本的流程圖。主要過程
步驟S501,創(chuàng)建一個(gè)新的模擬配置文件生成腳本程序,寫入初始化代碼(初始化 順—/£)為1)。
步驟S502,解析全局配置文件,獲得全部枚舉型參數(shù)^ …,&的名稱及其枚舉值 集合A, A,…五f。對每一個(gè)枚舉型參數(shù),寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該
循環(huán)語句的功能是枚舉該參數(shù)所有的取值。除第一條循環(huán)語句外,每次寫入的循環(huán)語句 都要位于前一次寫入的循環(huán)語句結(jié)構(gòu)的內(nèi)部。步驟S503,解析全局配置文件,獲得全部整數(shù)型參數(shù)/1,/2,...,/£的名稱、下界 /Zm^,/丄ow2…,/Zo^ 、上界/L^,/L^2,…,/L^和遞增步長Z^A,7&印2,…,JS^^ 。對每 一個(gè)整數(shù)型參數(shù)^ (1S々^丄),寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句 以一個(gè)整數(shù)為索引變量,索引變量的下界是/Zm^,上界是/l/;^,步長為/泣印-,功能
是枚舉該整數(shù)型參數(shù)所有的取值。其中第一次寫入的循環(huán)語句位于步驟S502生成的嵌套 循環(huán)的最內(nèi)層循環(huán)內(nèi),其后每次寫入的循環(huán)語句都要位于前一次寫入的循環(huán)語句結(jié)構(gòu)的 內(nèi)部。
步驟S504,解析全局配置文件,獲得全部浮點(diǎn)型參數(shù)/1,/2,...,/^的名稱、下界
^Xo^,FZxW2…,/^omv 、上界^/^,F(xiàn)L^,…,i^7;^和遞增步長i^明,i^e;72,…,/^印M 。
因?yàn)槌绦蛑幸话悴恢С謱σ愿↑c(diǎn)變量作為循環(huán)的索引變量,這里需要做專門處理。對每 個(gè)浮點(diǎn)參數(shù)力(lSy《M),先計(jì)算^=(^/&-F丄ow,)/i^嘩y (A^取整數(shù));然后,
寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句以一個(gè)整數(shù)為索引變量,索引變 量的下界是l,上界是iVy,步長是l。其中第一次寫入的循環(huán)語句位于步驟S503生成嵌
套循環(huán)的最內(nèi)層循環(huán)內(nèi),其后每次寫入的循環(huán)語句都位于前一次寫入的循環(huán)語句結(jié)構(gòu)的 內(nèi)部。
步驟S505,在步驟S504得到的模擬配置文件生成腳本的最內(nèi)層循環(huán)內(nèi),寫入主要 的功能代碼塊,該代碼塊的流程是
S505.1創(chuàng)建編號(hào)為F^一/D的模擬配置文件,模擬配置文件的名字都以固定的
標(biāo)識(shí)符開頭,并將編號(hào)作為其文件名的一部分。
S505.2對每個(gè)枚舉型模擬配置參數(shù),在當(dāng)前模擬配置文件中寫入一行,記錄該 枚舉參數(shù)的當(dāng)前值。
S505.3對每個(gè)整數(shù)型模擬配置參數(shù),在當(dāng)前模擬配置文件中寫入一行,記錄該 整數(shù)參數(shù)的當(dāng)前值。
S505.4對每個(gè)浮點(diǎn)型模擬配置參數(shù),首先計(jì)算其當(dāng)前取值,然后在當(dāng)前模擬配 置文件記錄其當(dāng)前值。
S505.5關(guān)閉當(dāng)前模擬配置文件,F(xiàn)&一/"的值增加l。 步驟S506,在步驟S505得到的配置文件生成腳本的最后寫入結(jié)束代碼,功能是記 錄生成的不同模擬配置文件的數(shù)目到一個(gè)文件中。
圖6所示是模擬配置文件生成腳本的執(zhí)行流程圖。主要過程
22步驟S601,進(jìn)行初始化,將模擬配置文件初始編號(hào)F&一/Z)的值設(shè)為1。
步驟S602,開始執(zhí)行嵌套循環(huán)的一個(gè)迭代,創(chuàng)建編號(hào)為"/e一/D的模擬配置文件
步驟S603,對每個(gè)枚舉型模擬配置參數(shù),在模擬配置文件SC^—^中寫入一行,記
錄該枚舉參數(shù)的當(dāng)前值,形式為枚舉參數(shù)名=枚舉參數(shù)當(dāng)前取值。
步驟S604,對每個(gè)整數(shù)型模擬配置參數(shù),在當(dāng)前模擬配置文件5T^—^中寫入一行,
記錄該整數(shù)參數(shù)的當(dāng)前值,形式為整數(shù)參數(shù)名=整數(shù)參數(shù)當(dāng)前取值。
步驟S605,對每個(gè)浮點(diǎn)型模擬配置參數(shù)厶(is;isM),首先計(jì)算其當(dāng)前取值。設(shè)
嵌套循環(huán)的當(dāng)次迭代時(shí)該浮點(diǎn)參數(shù)對應(yīng)的索引變量的取值為尸//血,則浮點(diǎn)型參數(shù)的當(dāng) 前取值為凡0巧+/^嘩/1*(月/^-1)。然后,在模擬配置文件SC她—m中寫入一行,形
式為浮點(diǎn)參數(shù)名=浮點(diǎn)參數(shù)當(dāng)前取值。
步驟S606,關(guān)閉模擬配置文件SC^,, /D的值增加1。
步驟S607,判斷是否已執(zhí)行完嵌套循環(huán)的所有迭代,如果已執(zhí)行完,則轉(zhuǎn)步驟S608, 否則轉(zhuǎn)步驟S602。
步驟S608,創(chuàng)建一個(gè)記錄生成的不同模擬配置文件的數(shù)目的文件,在其中寫入 K7e —/D-l的值。
圖7所示是任務(wù)調(diào)度程序的流程圖。主要流程
步驟S701,解析全局配置文件,獲得模擬節(jié)點(diǎn)列表,采用循環(huán)分布策略,將模擬配 置文件從主控節(jié)點(diǎn)上分發(fā)到各個(gè)模擬節(jié)點(diǎn)上。該步驟完成后,每個(gè)模擬節(jié)點(diǎn)上都有一個(gè) 屬于自己的模擬配置文件子集,不同模擬節(jié)點(diǎn)上模擬配置文件之間的交集為空。
步驟S702,生成模擬控制腳本,該腳本是控制各個(gè)模擬節(jié)點(diǎn)進(jìn)行工作的批處理程序。
步驟S703,將模擬控制腳本復(fù)制到每個(gè)模擬節(jié)點(diǎn)上。
步驟S704,啟動(dòng)模擬節(jié)點(diǎn)上的模擬控制腳本,使各個(gè)模擬節(jié)點(diǎn)對其所分配的模擬配 置逐個(gè)進(jìn)行模擬。
圖8所示是模擬節(jié)點(diǎn)上模擬控制腳本的執(zhí)行流程圖。主要流程 步驟S801,搜索本模擬節(jié)點(diǎn)上一個(gè)尚未評估過的模擬配置文件,記錄其編號(hào) 艦7D。步驟S802,執(zhí)行模擬器軟件,目標(biāo)體系結(jié)構(gòu)采用當(dāng)前模擬配置文件中的配置,對
Benchmark程序進(jìn)行模擬測試,模擬結(jié)果輸出到編號(hào)為"/e_/D的結(jié)果文件中。 步驟S803,將步驟S802生成的模擬結(jié)果文件發(fā)送到主控節(jié)點(diǎn)上。 步驟S804,判斷本節(jié)點(diǎn)上的所有模擬配置文件是否已評估完,若未評估完,轉(zhuǎn)步驟
S801;否則,流程結(jié)束。
圖9所示是結(jié)果分析程序的流程圖。主要流程 步驟S901,進(jìn)行初始化工作。過程如下
S901.1解析全局配置文件,初始化用戶感興趣的目標(biāo)性能參數(shù)列表 尸M,尸W,...,尸K,并為每個(gè)目標(biāo)性能參數(shù)尸C^ (1《;i^i )創(chuàng)建一個(gè)數(shù)組結(jié)構(gòu)尸SQ,
用于存儲(chǔ)該性能參數(shù)值最優(yōu)時(shí)對應(yīng)的模擬配置參數(shù)列表,該數(shù)組包含《+丄+ M個(gè)元 素,其中第h個(gè)元素PSC,[/z]對應(yīng)第h個(gè)模擬配置參數(shù)。
S卯1.2從記錄文件中獲得模擬配置文件總數(shù)SC做W ,初始化計(jì)數(shù)器i Ow"fer值為1。
S901.3任意選取一個(gè)模擬結(jié)果文件,采用其中的性能參數(shù)值來初始化目標(biāo)性能 參數(shù)列表尸^,P^,…,PC^,采用與該模擬結(jié)果文件編號(hào)相同的模擬配置文件中的配 置參數(shù)的值來初始化每個(gè)數(shù)組i^G (1S/ISJ )。
步驟S902,搜索一個(gè)尚未分析過的模擬結(jié)果文件Cwi F^,從中獲得全部性能參數(shù) 的值OlPL^CW尸t/2,…,OlP[^ 。
步驟S903,分別將O^C/,,Otft/2,…,CrtPt^與已記錄的對應(yīng)最優(yōu)性能參數(shù)進(jìn)行比 較,如果Cw尸R,Cw尸K,...,OtPK中的一個(gè)或多個(gè)優(yōu)于已記錄的對應(yīng)最優(yōu)性能參數(shù),則 轉(zhuǎn)步驟S904;否則,轉(zhuǎn)步驟S卯5。
步驟S904,更新最優(yōu)性能參數(shù)和對應(yīng)的模擬配置參數(shù)的記錄,過程如下 S904.1找到與結(jié)果文件OWFz'/e編號(hào)相同的配置文件CHSCFz7e 。 S904.2解析0必CW/e中各個(gè)模擬配置參數(shù)的值,記錄在臨時(shí)數(shù)組tow/^C中。 S904.3初始化,置迭代索引變量/l的值為1。
S904.4若尸^=1且OlP^〉戶^,或者PI^;1且OlPf^〈Pf/義,則轉(zhuǎn)S904.5;
否則,轉(zhuǎn)S904.9。
S904.5置PC/^CW尸^。
S904.6初始化,置迭代索引變量h的值為1。S904.7置尸SQ [/z] = ,e附/ SC [h]。
S904.8若/z〈《+丄+ M,貝Uh的值增加1 ,轉(zhuǎn)S卯4.7;否則,退出迭代,轉(zhuǎn)S904.9 。S904.9若;i〈R,則義的值增加l,轉(zhuǎn)S904.4;否則,步驟S904結(jié)束。步驟S905,計(jì)數(shù)器變量i Ow"fer的值增加1。
步驟S906,進(jìn)行判斷,如果i On/"ter〈SC做"?,則轉(zhuǎn)到步驟S902;否則,轉(zhuǎn)步驟S907。
步驟S907,輸出最終獲得的各個(gè)最優(yōu)性能參數(shù)PM,Pf/2,…,尸f^以及它們對應(yīng)的模擬配置參數(shù)的值。
本發(fā)明是一種基于集群并行計(jì)算機(jī)系統(tǒng)和體系結(jié)構(gòu)模擬器來模擬優(yōu)選計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案的方法,該方法采用集群系統(tǒng)作為宿主機(jī),基于專門設(shè)計(jì)的全局配置程序、模擬配置文件生成程序、任務(wù)調(diào)度程序、結(jié)果分析程序的協(xié)調(diào)配合,控制在多個(gè)模擬節(jié)點(diǎn)上采用不同配置文件來運(yùn)行模擬器的不同實(shí)例,并行地對目標(biāo)計(jì)算機(jī)體系結(jié)構(gòu)的不同配置方案進(jìn)行評估,加速了體系結(jié)構(gòu)設(shè)計(jì)方案優(yōu)選過程,有利于獲得更優(yōu)的設(shè)計(jì)方案,并提高了體系結(jié)構(gòu)設(shè)計(jì)方案優(yōu)選過程的自動(dòng)化程度,方便了用戶操作。
2權(quán)利要求
1. 一種基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法,其特征在于包括以下步驟第一步,構(gòu)建具備遠(yuǎn)程命令執(zhí)行環(huán)境的集群系統(tǒng),該集群系統(tǒng)由多個(gè)節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)都是一臺(tái)可獨(dú)立運(yùn)行的計(jì)算機(jī),各個(gè)節(jié)點(diǎn)間通過網(wǎng)絡(luò)設(shè)備相互連接,指定一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn),它負(fù)責(zé)與用戶交互,完成輸入輸出及模擬配置文件的分發(fā)、任務(wù)調(diào)度和結(jié)果分析,其它節(jié)點(diǎn)稱為模擬節(jié)點(diǎn),它們負(fù)責(zé)對具體的體系結(jié)構(gòu)配置進(jìn)行模擬,并將模擬結(jié)果發(fā)送給主控節(jié)點(diǎn),P個(gè)可用的模擬節(jié)點(diǎn)編號(hào)為1—P;主控節(jié)點(diǎn)上安裝有全局配置程序、模擬配置文件生成程序、任務(wù)調(diào)度程序和結(jié)果分析程序;全局配置程序負(fù)責(zé)將全局性的配置設(shè)置記錄在全局配置文件中;模擬配置文件生成程序根據(jù)全局配置文件生成覆蓋整個(gè)設(shè)計(jì)空間的模擬配置文件,每個(gè)模擬配置文件記錄體系結(jié)構(gòu)的一種配置,包含設(shè)計(jì)空間中每個(gè)參數(shù)的一個(gè)具體的取值,代表設(shè)計(jì)空間的一個(gè)點(diǎn);任務(wù)調(diào)度程序根據(jù)全局配置文件將模擬配置文件分發(fā)到各個(gè)模擬節(jié)點(diǎn),并調(diào)度各個(gè)模擬節(jié)點(diǎn)針對各自分配的模擬配置文件進(jìn)行模擬評估;結(jié)果分析程序接收各個(gè)模擬節(jié)點(diǎn)上的模擬結(jié)果,進(jìn)行統(tǒng)計(jì)分析,篩選出最優(yōu)配置;模擬節(jié)點(diǎn)上安裝有目標(biāo)體系結(jié)構(gòu)模擬器和Benchmark程序,模擬節(jié)點(diǎn)收到主控節(jié)點(diǎn)向它分配的模擬配置文件后,根據(jù)從模擬配置文件中獲得各個(gè)體系結(jié)構(gòu)參數(shù)的取值,在模擬器上模擬運(yùn)行Benchmark程序,得到目標(biāo)體系結(jié)構(gòu)采用當(dāng)前配置情況下的性能數(shù)據(jù);第二步,主控節(jié)點(diǎn)執(zhí)行全局配置程序,進(jìn)行全局性的配置設(shè)置,將設(shè)置結(jié)果記錄在全局配置文件中,全局配置文件包含模擬節(jié)點(diǎn)列表域、模擬器軟件域、體系結(jié)構(gòu)參數(shù)域和目標(biāo)性能參數(shù)域,全局配置程序進(jìn)行配置設(shè)置的方法是2. 1全局配置程序指定當(dāng)前可用做模擬節(jié)點(diǎn)的節(jié)點(diǎn),并將指定結(jié)果記錄在全局配置文件的模擬節(jié)點(diǎn)列表域中;2. 2全局配置程序?qū)⒛M器軟件的文件名、完整路徑、Benchmark程序的文件名、完整路徑以及運(yùn)行Benchmark程序時(shí)的命令行參數(shù)記錄在全局配置文件的模擬器軟件域中;2. 3全局配置程序?qū)Ⅲw系結(jié)構(gòu)設(shè)計(jì)空間所包含的配置參數(shù)的名稱及其取值范圍記錄在全局配置文件的體系結(jié)構(gòu)參數(shù)域,體系結(jié)構(gòu)參數(shù)域包含三個(gè)子域枚舉型參數(shù)子域、整數(shù)型參數(shù)子域和浮點(diǎn)型參數(shù)子域;設(shè)體系結(jié)構(gòu)設(shè)計(jì)空間中包含K個(gè)枚舉型參數(shù)e1,e2,...,eK,第α個(gè)枚舉型參數(shù)eα取nα個(gè)枚舉值eα(1),eα(2),…,eα(nα),1≤α≤K,則在枚舉型參數(shù)子域中記錄每個(gè)枚舉參數(shù)eα的名稱及其全部枚舉值的集合{eα(1),eα(2),…,eα(nα)};設(shè)模擬器需要L個(gè)整數(shù)型參數(shù)i1,i2,...,iL,第β個(gè)整數(shù)參數(shù)iβ的下界為ILowβ,上界為IUpβ,遞增步長為IStepβ,ILowβ、IUpβ和IStepβ均為整數(shù),且IStepβ>0,1≤β≤L,則在整數(shù)型參數(shù)子域中記錄每個(gè)整數(shù)參數(shù)的名稱、上下界及步長;設(shè)模擬器需要M個(gè)浮點(diǎn)型參數(shù)f1,f2,...,fM,第γ個(gè)浮點(diǎn)參數(shù)fγ的下界為FLowγ,上界為FUpγ,遞增步長為FStepγ,其中FLowγ、FUpγ和FStepγ均為整數(shù),且FStepγ>0,1≤γ≤M,則在浮點(diǎn)型參數(shù)子域中記錄每個(gè)浮點(diǎn)參數(shù)的名稱、上下界及步長;2. 4全局配置程序?qū)⒛繕?biāo)性能參數(shù)及其正負(fù)向?qū)傩栽O(shè)置在全局配置文件的目標(biāo)性能參數(shù)域,設(shè)共有R個(gè)目標(biāo)性能參數(shù)PU1,PU2,...,PUR,全局配置程序在全局配置文件的目標(biāo)性能參數(shù)域中記錄各個(gè)目標(biāo)性能參數(shù)的名稱與正負(fù)向?qū)傩訮V1,PV2,...,PVR,各個(gè)目標(biāo)性能參數(shù)的名稱與模擬器輸出文件中對應(yīng)參數(shù)的名稱要保持一致;第三步,模擬配置文件生成程序從全局配置文件的體系結(jié)構(gòu)參數(shù)域中獲得體系結(jié)構(gòu)設(shè)計(jì)空間包含的各個(gè)參數(shù)的名稱及其取值范圍,生成所有的模擬配置文件,每個(gè)模擬配置文件對應(yīng)目標(biāo)體系結(jié)構(gòu)設(shè)計(jì)空間的一個(gè)具體配置,它包含K+L+M行,K是枚舉型參數(shù)的數(shù)目,L整數(shù)型參數(shù)的數(shù)目,M是浮點(diǎn)型參數(shù)的數(shù)目,每一行記錄一個(gè)體系結(jié)構(gòu)參數(shù)的名稱及其當(dāng)前取值;模擬配置文件生成過程是3. 1根據(jù)全局配置文件產(chǎn)生一個(gè)模擬配置文件生成腳本;3. 2執(zhí)行模擬配置文件生成腳本,生成配置文件,存儲(chǔ)在主控節(jié)點(diǎn)上,每個(gè)模擬配置文件按其生成的順序編號(hào);第四步,任務(wù)調(diào)度程序?qū)⒛M評估任務(wù)分配給各個(gè)節(jié)點(diǎn),并控制各個(gè)模擬節(jié)點(diǎn)并行地進(jìn)行模擬評估,包括以下步驟4. 1任務(wù)調(diào)度程序?qū)⒛M配置文件從主控節(jié)點(diǎn)分發(fā)到各個(gè)模擬節(jié)點(diǎn);4. 2控制各個(gè)模擬節(jié)點(diǎn)并行地進(jìn)行模擬評估,即任務(wù)調(diào)度程序調(diào)度各個(gè)模擬節(jié)點(diǎn)啟動(dòng)體系結(jié)構(gòu)模擬器,以各自分配的模擬配置文件為目標(biāo)計(jì)算機(jī)體系結(jié)構(gòu)配置,模擬運(yùn)行Benchmark程序,得到該配置情況下Benchmark程序運(yùn)行的性能數(shù)據(jù),記錄在結(jié)果文件中,并將結(jié)果文件發(fā)送給主控節(jié)點(diǎn);具體步驟是4. 2.1任務(wù)調(diào)度程序在主控節(jié)點(diǎn)上生成模擬控制腳本;4. 2.2任務(wù)調(diào)度程序?qū)⒛M控制腳本從主控節(jié)點(diǎn)上復(fù)制到各個(gè)模擬節(jié)點(diǎn)上;4. 2.3任務(wù)調(diào)度程序啟動(dòng)各個(gè)模擬節(jié)點(diǎn)上的模擬控制腳本;各個(gè)模擬節(jié)點(diǎn)執(zhí)行模擬控制腳本,對各個(gè)模擬配置文件進(jìn)行模擬評估,將每個(gè)模擬配置文件的評估結(jié)果記錄在一個(gè)結(jié)果文件中,結(jié)果文件的編號(hào)與模擬配置文件的編號(hào)相同,每評估完一個(gè)模擬配置文件就將其結(jié)果文件發(fā)送給主控節(jié)點(diǎn);第五步,主控節(jié)點(diǎn)上的結(jié)果分析程序不斷地搜索模擬節(jié)點(diǎn)發(fā)來的模擬結(jié)果文件,進(jìn)行統(tǒng)計(jì)分析,篩選出針對各個(gè)性能參數(shù)的最優(yōu)配置參數(shù)值,輸出報(bào)告,步驟是5. 1進(jìn)行初始化工作,具體是(i)解析全局配置文件,初始化目標(biāo)性能參數(shù)列表PU1,PU2,...,PUR,并為每個(gè)目標(biāo)性能參數(shù)PUλ創(chuàng)建一個(gè)數(shù)組結(jié)構(gòu)PSCλ,用于存儲(chǔ)該性能參數(shù)值最優(yōu)時(shí)對應(yīng)的模擬配置參數(shù)值,1≤λ≤R,該數(shù)組包含K+L+M個(gè)元素,其中第h個(gè)元素PSCλ[h]對應(yīng)第h個(gè)模擬配置參數(shù);(ii)從記錄文件中獲得總模擬配置數(shù)SCount,初始化計(jì)數(shù)器RCounter的值為1;(iii)任意選取一個(gè)模擬結(jié)果文件,采用其中的性能參數(shù)值來初始化目標(biāo)性能參數(shù)列表PU1,PU2,...,PUR,采用與該模擬結(jié)果文件編號(hào)相同的模擬配置文件中的配置參數(shù)值來初始化每個(gè)數(shù)組PSCλ;5. 2搜索一個(gè)尚未統(tǒng)計(jì)過的的模擬結(jié)果文件CrtRFile,從中獲得全部性能參數(shù)的值CrtPU1,CrtPU2,...,CrtPUR;5. 3分別將CrtPU1,CrtPU2,...,CrtPUR與已記錄的對應(yīng)最優(yōu)性能參數(shù)進(jìn)行比較,如果CrtPU1,CrtPU2,...,CrtPUR中的一個(gè)或多個(gè)優(yōu)于已記錄的對應(yīng)最優(yōu)性能參數(shù),則轉(zhuǎn)5.4;否則,轉(zhuǎn)5.5;5. 4更新最優(yōu)性能參數(shù)和對應(yīng)的模擬配置參數(shù)的記錄,過程如下(A)找到與結(jié)果文件CrtRFile編號(hào)相同的模擬配置文件CrtSCFile;(B)解析CrtSCFile中模擬配置參數(shù)的值,記錄在臨時(shí)數(shù)組tempSC中;(C)初始化,置迭代索引變量λ的值為1;(D)若PVλ=1且CrtPUλ>PUλ,或者PVλ=-1且CrtPUλ<PUλ,則轉(zhuǎn)(E);否則,轉(zhuǎn)(I);(E)置PUλ=CrtPUλ;(F)初始化,置迭代索引變量h的值為1;(G)置PSCλ[h]=tempSC[h];(H)若h<K+L+M,則h的值增加1,轉(zhuǎn)(G);否則,退出迭代,轉(zhuǎn)(I);(I)若λ<R,則λ的值增加1,轉(zhuǎn)(D);否則,步驟5.4結(jié)束;5. 5計(jì)數(shù)器變量RCounter的值增加1;5. 6進(jìn)行判斷,如果RCounter<SCount,則轉(zhuǎn)5.2;否則,轉(zhuǎn)5.7;5. 7輸出最終獲得的各個(gè)最優(yōu)性能參數(shù)PU1,PU2,...,PUR以及它們對應(yīng)的模擬配置參數(shù)的值。
2.如權(quán)利要求1所述的基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法,其特征在于產(chǎn)生模擬配置文件生成腳本的步驟是步驟1,創(chuàng)建一個(gè)腳本程序,向腳本程序中寫入初始化代碼將模擬配置文件編號(hào)Fz7e —/£>設(shè)為1;步驟2,解析全局配置文件,獲得全部枚舉型參數(shù)^^2,...,^的名稱及其枚舉集合^, £2,...£x,對每一個(gè)枚舉型參數(shù),寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句的功能是枚舉該參數(shù)所有的取值,除第一條循環(huán)語句外,每次寫入的循環(huán)語句都要位于前一次寫入的循環(huán)語句結(jié)構(gòu)的內(nèi)部,這樣就得到了一個(gè)K層的緊嵌套循環(huán);步驟3,解析全局配置文件,獲得全部整數(shù)型參數(shù)H...,L的名稱、下界/LoM^/丄ow2…,/丄oM^ 、上界/[/; 1,^ 2"-"^^和遞增步長,&印1,/&印2,...,/泣印£ ,對每一個(gè)整數(shù)型參數(shù)^, 1S/ 2Z,寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句的功能是枚舉該整數(shù)型參數(shù)所有的取值,以一個(gè)整數(shù)為索引變量,索引變量的下界是/Zm^,上界是/C//^,步長為/5te/^;其中第一次寫入的循環(huán)語句位于步驟2生成的嵌套循環(huán)的最內(nèi)層循環(huán)內(nèi),其后每次寫入的循環(huán)語句都位于前一次寫入的循環(huán)語句結(jié)構(gòu)的內(nèi)部,該步驟在步驟2得到的最內(nèi)層循環(huán)中加入了一個(gè)£層的緊嵌套循環(huán);步驟4,解析全局配置文件,獲得全部浮點(diǎn)型參數(shù)/1,/2,...,_4的名稱、下界FZoM^,FZow2…,F(xiàn)i:oMv 、上界7^/^,/^//72,...,/^^1/和遞增步長尸》明,7^卬2,...,尸&£^ ;對每個(gè)浮點(diǎn)參數(shù)力,lS7SM,先計(jì)算乂 =(尸[^-i^o^)/FS^^, &取整數(shù);然后,寫入一個(gè)循環(huán)語句到配置文件生成腳本中,該循環(huán)語句以一個(gè)整數(shù)為索引變量,索引變量的下界是l,上界是iV"步長是l;其中第一次寫入的循環(huán)語句位于步驟3得到嵌套循環(huán)的最內(nèi)層循環(huán)內(nèi),其后每次寫入的循環(huán)語句都位于前一次寫入循環(huán)語句結(jié)構(gòu)的內(nèi)部, 該步驟在步驟.3得到的最內(nèi)層循環(huán)中加入了一個(gè)M層的嵌套循環(huán);步驟5,在步驟4得到的模擬配置文件生成腳本中的最內(nèi)層循環(huán)內(nèi),寫入功能代碼塊, 該功能代碼塊的流程是-(1) 創(chuàng)建編號(hào)為尸/7e一/D的模擬配置文件,模擬配置文件的名字都以固定的標(biāo)識(shí)符開頭,并將其編號(hào)作為文件名的一部分;(2) 對每個(gè)枚舉型模擬配置參數(shù),在當(dāng)前模擬配置文件中寫入一行語句,記錄 該枚舉參數(shù)的當(dāng)前值,枚舉參數(shù)當(dāng)前取值就是嵌套循環(huán)的當(dāng)次迭代時(shí)該枚舉參數(shù)對應(yīng) 的索引變量的值;(3) 對每個(gè)整數(shù)型模擬配置參數(shù),在當(dāng)前模擬配置文件中寫入一行,記錄該整 數(shù)參數(shù)的當(dāng)前值,整數(shù)參數(shù)當(dāng)前取值就是嵌套循環(huán)的當(dāng)次迭代時(shí)該整數(shù)參數(shù)對應(yīng)的索 引變量的值;(4) 對每個(gè)浮點(diǎn)型模擬配置參數(shù),首先計(jì)算其當(dāng)前取值,然后在當(dāng)前模擬配置 文件中寫入一行,記錄其當(dāng)前值;(5) 關(guān)閉當(dāng)前模擬配置文件,尸&_//)的值增加1;步驟6,在配置文件生成腳本的最后寫入代碼,功能是將生成的不同模擬配置文件的 數(shù)目記錄到一個(gè)文件中。
3.如權(quán)利要求1所述的基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法,其特 征在于模擬配置文件生成腳本的執(zhí)行流程是-步驟l)初始化,將模擬配置文件初始編號(hào)尸/fe一/D的值設(shè)為1;步驟2)開始執(zhí)行嵌套循環(huán)的一次迭代,創(chuàng)建編號(hào)為H/e一/D的模擬配置文件jL艦—化,步驟3)對每個(gè)枚舉型模擬配置參數(shù),在模擬配置文件SC^—^中寫入一行,記錄該枚舉參數(shù)的當(dāng)前值,形式為枚舉參數(shù)名=枚舉參數(shù)當(dāng)前取值。步驟4)對每個(gè)整數(shù)型模擬配置參數(shù),在當(dāng)前模擬配置文件SC^,。中寫入一行,記錄該整數(shù)參數(shù)的當(dāng)前值,形式為整數(shù)參數(shù)名=整數(shù)參數(shù)當(dāng)前取值。步驟5)對每個(gè)浮點(diǎn)型模擬配置參數(shù)/;, 1^r^M,首先計(jì)算其當(dāng)前取值;設(shè)執(zhí)行 嵌套循環(huán)當(dāng)次迭代時(shí)該浮點(diǎn)參數(shù)對應(yīng)的索引變量的取值為尸//血"則浮點(diǎn)型參數(shù)的當(dāng)前取值為凡m^+i^嘩^(F//^-1),然后,在模擬配置文件SC她—m中寫入一行,形式為浮點(diǎn)參數(shù)名-浮點(diǎn)參數(shù)當(dāng)前取值;步驟6)關(guān)閉模擬配置文件SC^,, Fz7e —/Z)的值增加1;步驟7)如果已執(zhí)行完嵌套循環(huán)的所有迭代,則轉(zhuǎn)步驟8),否則轉(zhuǎn)步驟2); 步驟8)創(chuàng)建一個(gè)文件,在其中寫入K7e —/D-l的值。
4..如權(quán)利要求1所述的基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法,其 特征在于模擬腳本程序的流程是(a) 搜索本模擬節(jié)點(diǎn)上一個(gè)尚未評估過的模擬配置文件,記錄其編號(hào)"/e一/D;(b) 執(zhí)行模擬器軟件,目標(biāo)體系結(jié)構(gòu)采用當(dāng)前模擬配置文件中的配置,對 Benchmark程序進(jìn)行模擬測試,模擬結(jié)果輸出到編號(hào)為F//e_/D的文件中;(c) 將生成的模擬結(jié)果文件發(fā)送到主控節(jié)點(diǎn);(d) 若尚未評估完本節(jié)點(diǎn)上的全部模擬配置文件,轉(zhuǎn)步驟(a);否則流程結(jié)束。
5.如權(quán)利要求1所述的基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法,其特征在于任務(wù)調(diào)度程序?qū)⒛M配置文件從主控節(jié)點(diǎn)分發(fā)到各個(gè)模擬節(jié)點(diǎn)時(shí)采用循環(huán)分布策 略,循環(huán)分布策略是設(shè)共有P個(gè)可用模擬節(jié)點(diǎn),W個(gè)模擬配置文件,iV〉P,若PIN即 N能被P整除,則模擬節(jié)點(diǎn)W;上分配的模擬配置文件是(SC", SC。+p, SC"+2p,..., ST"+W—p}, 1S/7《P;否則,令iV除以P的余數(shù)為"e#0,當(dāng)lS/7Ss時(shí),模擬節(jié)點(diǎn)^ 上分配的配置文件集合是{, SC^, SC。+2P, ..., SC。+w—p},當(dāng)£<77^ 時(shí),模擬節(jié)點(diǎn)^上分配的配置文件集合是(SC。, SC^, SC"+2/), ..., SC |w| },其中 示不大于!的最大整數(shù)£ P
全文摘要
本發(fā)明公開了一種基于集群系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)方案并行模擬優(yōu)選方法,目的是提供一種計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案并行模擬優(yōu)選的方法。技術(shù)方案是先構(gòu)建具備遠(yuǎn)程命令執(zhí)行環(huán)境的由主控節(jié)點(diǎn)和模擬節(jié)點(diǎn)組成的集群并行計(jì)算機(jī)系統(tǒng),主控節(jié)點(diǎn)上安裝有全局配置程序、模擬配置文件生成程序、任務(wù)調(diào)度程序和結(jié)果分析程序。全局配置程序進(jìn)行全局性的配置設(shè)置;模擬配置文件生成程序生成所有的模擬配置文件;任務(wù)調(diào)度程序?qū)⒛M評估任務(wù)分配給各個(gè)節(jié)點(diǎn),控制各個(gè)模擬節(jié)點(diǎn)并行地進(jìn)行模擬評估;結(jié)果分析程序搜索模擬節(jié)點(diǎn)發(fā)來的模擬結(jié)果文件,進(jìn)行統(tǒng)計(jì),篩選出最優(yōu)配置參數(shù)值,輸出報(bào)告。采用本發(fā)明既能減少評價(jià)優(yōu)選的時(shí)間,又能提高選擇的準(zhǔn)確度。
文檔編號(hào)G06F17/50GK101464922SQ20091004258
公開日2009年6月24日 申請日期2009年1月22日 優(yōu)先權(quán)日2009年1月22日
發(fā)明者徐傳福, 方建濱, 維 曹, 王勇獻(xiàn), 王正華, 翁玉芬, 車永剛, 陸平靜 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)