亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于CFIO的參數(shù)自動選擇研究

        2015-04-14 12:28:04孫新華楊廣文
        關(guān)鍵詞:子程序緩沖區(qū)數(shù)目

        孫新華 ,張 程 ,楊廣文

        1.清華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,北京 100084

        2.清華大學(xué) 地球系統(tǒng)科學(xué)研究中心 地球系統(tǒng)數(shù)值模擬教育部重點(diǎn)實(shí)驗(yàn)室,北京 100084

        1 引言

        近年來,全球氣候正在經(jīng)歷一場顯著的變化,其以全球變暖為主要特征,伴隨著冰川融化退縮、海平面上升、土地沙漠化不斷加劇,對地球的生態(tài)和環(huán)境產(chǎn)生了嚴(yán)重的影響。隨之而來的各種極端天氣與氣候事件諸如暴雨、干旱、高溫天氣的頻發(fā)也社會各界的廣泛關(guān)注。如何有效地對氣候進(jìn)行預(yù)測分析成為擺在地球系統(tǒng)科學(xué)研究人員的難題,而地球系統(tǒng)模式作為地球系統(tǒng)科學(xué)走向定量化的標(biāo)志得到了越來越多研究人員的青睞,成為研究氣候變化的重要科學(xué)工具之一[1]。由于在低分辨率下地球系統(tǒng)模式無法模擬中小尺度下的過程,比如海洋模式中尺度漩渦過程,大氣模式中的云演變過程,并且在面對復(fù)雜地形時難以達(dá)到精度要求,研究者越來越傾向于使用高分辨率格點(diǎn)網(wǎng)絡(luò)進(jìn)行數(shù)值模擬,高分辨率成為了地球系統(tǒng)模式發(fā)展的一個顯著趨勢。

        隨著分辨率的提高,模式程序需要對更多格點(diǎn)網(wǎng)格進(jìn)行計(jì)算,在需要更多計(jì)算資源的同時也對運(yùn)行平臺的I/O能力提出了更高的要求。有數(shù)據(jù)顯示,因?yàn)槟J椒直媛实奶岣?,模式程序輸出?shù)據(jù)的規(guī)模呈現(xiàn)出幾何級的增長速度[2]。然而高性能計(jì)算機(jī)的I/O能力與計(jì)算能力的差距卻在逐漸拉大,這一方面是由于單機(jī)計(jì)算能力的增長速度遵循摩爾定律,遠(yuǎn)遠(yuǎn)高于磁盤帶寬的增長速度;另一方面是由于并行計(jì)算技術(shù)的發(fā)展和異構(gòu)加速器的引入,例如在科學(xué)應(yīng)用程序中廣泛使用的MPI和OpenMP技術(shù),可以讓科學(xué)計(jì)算程序運(yùn)行在成千乃至上萬個計(jì)算節(jié)點(diǎn)上,充分釋放了高性能計(jì)算集群的計(jì)算能力;同時GPGPU和FPGA的引入為科學(xué)計(jì)算提供了更廣闊的平臺。I/O能力的相對不足嚴(yán)重影響了地球系統(tǒng)模式在高性能計(jì)算平臺上的運(yùn)行效率,地球系統(tǒng)模式的運(yùn)行過程可以分為兩個階段,即計(jì)算階段和I/O階段,在傳統(tǒng)的I/O方法下等待數(shù)據(jù)輸出的過程中,模式無法繼續(xù)進(jìn)行計(jì)算只能等待I/O過程完成,因此模式的總體運(yùn)行時間為I/O時間與計(jì)算時間之和。隨著高分辨率地球系統(tǒng)模式輸出數(shù)據(jù)規(guī)模的增大,I/O過程的時間越來越長,I/O問題愈發(fā)成為模式運(yùn)行中的性能瓶頸。

        為了解決這一問題,研究人員結(jié)合地球系統(tǒng)模式的I/O特征并基于I/O轉(zhuǎn)發(fā)技術(shù)開發(fā)了一個面向地球系統(tǒng)模式的應(yīng)用層并行I/O庫CFIO(Climate Fast I/O Library)[3],利用I/O過程和計(jì)算過程的重疊來減少I/O過程對于模式整體運(yùn)行性能的影響。CFIO將運(yùn)行模式的進(jìn)程劃分為計(jì)算進(jìn)程和I/O進(jìn)程兩類,計(jì)算進(jìn)程只負(fù)責(zé)模式的計(jì)算過程,它將程序的I/O請求轉(zhuǎn)發(fā)到I/O進(jìn)程并緩存在I/O進(jìn)程的緩沖區(qū)中,而由I/O過程負(fù)責(zé)完成模式數(shù)據(jù)的實(shí)際輸出,這樣就將I/O進(jìn)程與計(jì)算進(jìn)程自動重疊從而實(shí)現(xiàn)對程序整體的加速。在實(shí)際的使用過程中發(fā)現(xiàn),在給定進(jìn)程數(shù)的情況下,如何劃分計(jì)算進(jìn)程與I/O進(jìn)程的比例以及I/O進(jìn)程中內(nèi)存緩沖區(qū)的大小會對模式程序整體運(yùn)行產(chǎn)生極大的影響:若I/O進(jìn)程過少,由于I/O能力不足會造成I/O進(jìn)程緩沖區(qū)堵塞,計(jì)算進(jìn)程被迫停下等待緩沖區(qū)的部分I/O請求完成才能繼續(xù),這樣就會拉長模式程序整體運(yùn)行時間;若I/O進(jìn)程過多,將會造成I/O能力過剩,會浪費(fèi)有限的計(jì)算資源。地學(xué)研究人員作為CFIO庫的使用者,并不一定具備底層系統(tǒng)層面的知識幫助他們完成CFIO庫相關(guān)參數(shù)的設(shè)置,所以現(xiàn)有的經(jīng)驗(yàn)式的參數(shù)指定方式使得CFIO庫在面對不同平臺不同地球系統(tǒng)模式時并不能發(fā)揮最好的效能。

        現(xiàn)有的與CFIO庫設(shè)計(jì)思路類似的并行I/O庫PIO[4]和DART[5]均沒有解決這一問題。PIO是CESM(Community Earth System Model)[6]的開發(fā)者結(jié)合地球系統(tǒng)模式中I/O特征專門為CESM開發(fā)的應(yīng)用層并行I/O庫,其并行I/O功能由更底層的并行I/O庫支持。目前PIO底層使用的 I/O 庫有 MPI-IO[7]、netCDF[8]和 PnetCDF[9],用戶可以根據(jù)自己的需要靈活選擇底層的I/O庫。PIO定義了兩種數(shù)據(jù)在進(jìn)程間的劃分方式即計(jì)算劃分和I/O劃分并提供了一個數(shù)據(jù)重劃分的功能接口。所謂計(jì)算劃分是指針對計(jì)算網(wǎng)格進(jìn)行的劃分,數(shù)據(jù)的產(chǎn)生是隨著計(jì)算任務(wù)按照計(jì)算劃分分布在進(jìn)程間的,但是這樣的分布方式并不一定適合底層I/O庫的I/O任務(wù)。用戶可以使用PIO提供的接口重新定義數(shù)據(jù)在進(jìn)程間的劃分方式即I/O劃分,經(jīng)過通信數(shù)據(jù)會在進(jìn)程間按I/O劃分重新分布以獲得更好的性能。與CFIO不同,PIO并沒有采取計(jì)算階段和通信階段重疊的方法,而是按照傳統(tǒng)的方式將計(jì)算與通信串聯(lián)進(jìn)行,數(shù)據(jù)按照計(jì)算劃分產(chǎn)生后先緩存,然后再按照I/O劃分的方式進(jìn)行通信、寫入。在重劃分過程中,用戶可以指定參與I/O劃分的進(jìn)程數(shù)以適應(yīng)不同的I/O需求,其進(jìn)程數(shù)指定方式主要依靠用戶的經(jīng)驗(yàn)式指定。DART是由美國橡樹嶺國家實(shí)驗(yàn)室開發(fā)的利用RDMA[10]作為通信方式的并行I/O轉(zhuǎn)發(fā)架構(gòu),與CFIO類似,DART系統(tǒng)中也存在DARTClient與DARTServer數(shù)目比例確定的問題。Ciprian Docan等[5]提到了自適應(yīng)地根據(jù)運(yùn)行平臺和程序的不同調(diào)整比例的重要性,但是并沒有付諸實(shí)踐。

        針對并行I/O庫經(jīng)驗(yàn)式的進(jìn)程管理和緩沖區(qū)管理方法所帶來的性能損失,基于CFIO結(jié)合地球系統(tǒng)模式中的I/O特征設(shè)計(jì)并實(shí)現(xiàn)了一套參數(shù)自動選擇的解決方案。通過目標(biāo)模式程序的預(yù)執(zhí)行收集I/O痕跡(I/O Trace)并統(tǒng)計(jì)其I/O特征信息,使用這套程序可以讓CFIO在不同平臺不同地球分量模式上既發(fā)揮CFIO最好的性能又不浪費(fèi)資源。

        本文首先介紹了CFIO的軟件結(jié)構(gòu),之后分析了不同地球系統(tǒng)分量模式中的I/O請求到達(dá)規(guī)律和參數(shù)自動選擇程序設(shè)計(jì)實(shí)現(xiàn)思路;最后,列出了具體實(shí)驗(yàn)結(jié)果。

        2 CFIO軟件結(jié)構(gòu)

        CFIO是一個適用于高分辨率地球系統(tǒng)模式的應(yīng)用層并行I/O庫。模式的運(yùn)行過程是由計(jì)算過程和I/O過程兩部分交替進(jìn)行,在使用同步I/O接口時模式需要阻塞等待I/O過程的完成,即計(jì)算過程和I/O過程串行執(zhí)行,模式運(yùn)行時間也就是計(jì)算時間和I/O時間之和。由于高分辨率地球系統(tǒng)模式輸出數(shù)據(jù)規(guī)模的急劇增加,越來越長的I/O時間對模式的整體運(yùn)行性能造成了極大的影響。而通過分析地球系統(tǒng)模式I/O特征可以發(fā)現(xiàn),模式的I/O過程總是跟隨在計(jì)算過程之后且頻率固定,同時模式的運(yùn)行過程中只涉及簡單的追加寫輸出,不會再次讀入寫出的數(shù)據(jù)。因此CFIO利用這種規(guī)律通過I/O轉(zhuǎn)發(fā)技術(shù)實(shí)現(xiàn)了計(jì)算過程與I/O過程的重疊。在原來的應(yīng)用場景中當(dāng)一個模式啟動時,所有的進(jìn)程既負(fù)責(zé)計(jì)算過程又負(fù)責(zé)I/O過程,在CFIO中,在原有進(jìn)程的基礎(chǔ)上,額外地啟動部分進(jìn)程專門負(fù)責(zé)I/O過程,即I/O轉(zhuǎn)發(fā)。如圖1所示,所有進(jìn)程被劃分為兩類進(jìn)程:一是計(jì)算進(jìn)程,負(fù)責(zé)地球系統(tǒng)模式中的計(jì)算任務(wù),計(jì)算進(jìn)程在執(zhí)行I/O過程時并不直接在本地調(diào)用底層I/O接口執(zhí)行I/O請求,而是通過網(wǎng)絡(luò)將I/O請求轉(zhuǎn)發(fā)到I/O進(jìn)程中;二是I/O進(jìn)程,負(fù)責(zé)地球系統(tǒng)模式中的I/O任務(wù),I/O進(jìn)程從計(jì)算進(jìn)程接收I/O請求并調(diào)用PnetCDF為計(jì)算進(jìn)程實(shí)際執(zhí)行I/O請求。這樣計(jì)算進(jìn)程在完成I/O轉(zhuǎn)發(fā)之后,并不需要等待計(jì)算過程的實(shí)際完成,而是繼續(xù)進(jìn)行下一個時間步的計(jì)算,而與此同時I/O過程也在I/O進(jìn)程上并發(fā)地執(zhí)行,從而實(shí)現(xiàn)了I/O過程與計(jì)算過程的重疊,隱藏了I/O時間,縮短了模式整體運(yùn)行的時間。

        圖1 CFIO中I/O轉(zhuǎn)發(fā)結(jié)構(gòu)圖

        具體分析CFIO的軟件結(jié)構(gòu),如圖2所示。運(yùn)行在I/O進(jìn)程上的CFIO服務(wù)器從運(yùn)行在計(jì)算進(jìn)程上的CFIO客戶端接收I/O請求并緩存在緩沖區(qū)中,之后通過調(diào)用PnetCDF庫按照先到先服務(wù)的原則處理I/O請求,將數(shù)據(jù)輸出到文件系統(tǒng)中。CFIO服務(wù)器處理I/O請求的流程:當(dāng)有新的I/O請求到達(dá)時,程序會檢查現(xiàn)有緩沖區(qū)容量是否可以容納最新到達(dá)的I/O請求,如果可以,服務(wù)器會正常接收轉(zhuǎn)發(fā)而來的I/O請求;若由于到達(dá)的I/O請求過多導(dǎo)致I/O請求的大小超過了緩沖區(qū)大小,CFIO服務(wù)器則不會再接收I/O請求進(jìn)入阻塞狀態(tài),需要處理并執(zhí)行部分的I/O請求釋放出部分的緩沖區(qū)空間,直到緩沖區(qū)有足夠的空間來緩存下一條I/O請求,服務(wù)器才會由阻塞狀態(tài)轉(zhuǎn)變回接收者狀態(tài),繼續(xù)接收數(shù)據(jù)。

        圖2 CFIO結(jié)構(gòu)細(xì)節(jié)圖

        一旦進(jìn)入CFIO服務(wù)器進(jìn)入阻塞狀態(tài),CFIO客戶端的計(jì)算過程也必須停止等待I/O過程,這樣計(jì)算過程與I/O過程隱藏效果就會變差,如圖3(b)所示,阻塞會讓CFIO客戶端的轉(zhuǎn)發(fā)等待時間變長,從而增加程序整體運(yùn)行時間。服務(wù)器端的堵塞是由于后端PnetCDF數(shù)據(jù)處理的能力不足,根本原因是初始階段分配的I/O進(jìn)程太少;若分配的I/O進(jìn)程過多則會造成I/O處理能力的過剩,如圖3(a)所示,造成計(jì)算資源的浪費(fèi)。只有在計(jì)算時間恰好等于I/O時間即如圖3(c)所示的情況下,才既能保證模式程序運(yùn)行性能又不浪費(fèi)計(jì)算資源,實(shí)現(xiàn)I/O過程與計(jì)算過程的完美隱藏。同時,在計(jì)算進(jìn)程數(shù)目一定的情況下,I/O進(jìn)程數(shù)目的不同會影響到每一個I/O進(jìn)程對應(yīng)的計(jì)算進(jìn)程的數(shù)目,因此每一個I/O進(jìn)程需要處理的I/O請求數(shù)目也會不同,進(jìn)而會影響CFIO服務(wù)器端緩沖區(qū)的使用量。

        圖3 計(jì)算過程與I/O過程的重疊

        3 設(shè)計(jì)與實(shí)現(xiàn)

        3.1 地球系統(tǒng)模式I/O特征分析

        在地球系統(tǒng)模式中,模式的運(yùn)行過程是有規(guī)律性的。由于地球系統(tǒng)模式中主要的計(jì)算過程均為動量方程組的迭代求解,在某些迭代步的計(jì)算之后會輸出一些信息用于記錄模式運(yùn)行狀況或者用于從程序崩潰中重新啟動,所以地球系統(tǒng)模式的運(yùn)行會出現(xiàn)周期性的特征:計(jì)算過程和I/O過程交替運(yùn)行,計(jì)算過程是固定時間的一步或者幾步迭代,I/O過程是以某一固定頻率出現(xiàn)在計(jì)算過程之后的記錄信息輸出。因此,對于單個計(jì)算進(jìn)程來說,其I/O請求在時間分布上是有周期性的,由一個個突發(fā)性的波峰和波峰之后長時間的無I/O的時間段構(gòu)成。而且每一個周期內(nèi)也有不同數(shù)量的I/O請求到達(dá)高峰,這是由于不同輸出文件輸出頻率不同造成的。而經(jīng)過對于海洋模式POP(Parallel Ocean Program)[11]、海冰模式CICE[12]兩種常用地球分量模式中I/O請求在CFIO服務(wù)器端的到達(dá)分布情況的測試,可以發(fā)現(xiàn)多個計(jì)算進(jìn)程的I/O請求在I/O進(jìn)程聚合之后仍然呈現(xiàn)出于計(jì)算進(jìn)程一樣的周期性,且與計(jì)算進(jìn)程發(fā)起I/O請求時的分布一致。這說明運(yùn)行在不同節(jié)點(diǎn)上的CFIO客戶端上計(jì)算過程是基本同步的,造成這種情況有兩點(diǎn)原因,一是因?yàn)樵诖蟛糠指咝阅芗褐懈鱾€物理節(jié)點(diǎn)的配置狀況相同或類似,二是因?yàn)樵诘厍蛳到y(tǒng)模式中,每一個時間步的最后會有全局的gather求和等需要全局通信的操作,因此相當(dāng)于每一個時間步各個計(jì)算進(jìn)程都需要同步一次。

        此外,對于每個I/O請求塊的大小進(jìn)行分析可以發(fā)現(xiàn),在同一個模式程序中I/O請求塊大小是完全相同或者分段相同的。這是由于模式程序的輸出通常情況下是嵌套在for循環(huán)中按照維度循環(huán)輸出的,因此每次調(diào)用CFIO寫入函數(shù)發(fā)起的I/O請求大小會相同;對于分段相同的情況發(fā)現(xiàn)是由于寫入數(shù)據(jù)類型的變化,整個寫入過程仍然嵌套在for循環(huán)中。

        3.2 設(shè)計(jì)原理

        根據(jù)第2章節(jié)對CFIO軟件結(jié)構(gòu)的分析,可以將CFIO服務(wù)器端對于I/O請求的處理看做一個排隊(duì)系統(tǒng)。根據(jù)上文的分析,該排隊(duì)系統(tǒng)到達(dá)分布為確定性的平均到達(dá),服務(wù)規(guī)則為“先到達(dá)先服務(wù)”,其服務(wù)端分布即PnetCDF庫的處理也可以看作是確定性的平均分布,服務(wù)臺的個數(shù)為1,所以進(jìn)程管理和緩沖區(qū)管理的問題可以轉(zhuǎn)化為對于該排隊(duì)系統(tǒng)中顧客源個數(shù)以及排隊(duì)長度的計(jì)算問題。根據(jù)排隊(duì)論可知,排隊(duì)系統(tǒng)達(dá)到穩(wěn)定的條件為:在概率上,一段時間內(nèi)到達(dá)的顧客總量等于可以被服務(wù)的顧客總量。CFIO服務(wù)器端的I/O到達(dá)有周期性的特點(diǎn),因?yàn)樵撓到y(tǒng)達(dá)到穩(wěn)定的條件是每一個周期內(nèi)到達(dá)的所有I/O請求都恰好能在該周期內(nèi)被PnetCDF完全處理,即

        其中,Si代表一個周期內(nèi)各個I/O請求塊的大小,n為I/O進(jìn)程的數(shù)目,Throughput(n)代表了n個I/O進(jìn)程時PnetCDF的總體寫入帶寬。對于I/O進(jìn)程數(shù),必須是計(jì)算進(jìn)程數(shù)約數(shù)這一點(diǎn)需要解釋,是由于CFIO設(shè)計(jì)過程中為了保證負(fù)載均衡和輸出數(shù)據(jù)的局部性,規(guī)定I/O劃分必須為計(jì)算劃分的整數(shù)倍,即I/O進(jìn)程數(shù)必須為計(jì)算進(jìn)程數(shù)的約數(shù)。

        而由于I/O請求到達(dá)時間集中,在I/O到達(dá)階段每一個I/O請求到達(dá)時間間隔為1~4 ms,且CFIO服務(wù)器處理機(jī)制為一旦有I/O請求達(dá)到則立即判斷緩沖區(qū)空間是否充裕,以確定是否將I/O請求加入隊(duì)列中,能夠調(diào)用PnetCDF庫處理I/O請求的時間極少。因此,可以認(rèn)為緩沖區(qū)的大小需要容納I/O請求最高峰時所有I/O請求,即

        其中,Si代表I/O請求數(shù)量最高峰時到達(dá)的各個I/O請求的大小,n為I/O進(jìn)程的數(shù)目,N為預(yù)執(zhí)行時I/O進(jìn)程的數(shù)目;乘N/n表示正式運(yùn)行時每一個I/O進(jìn)行需要接收N/n倍的I/O請求。

        根據(jù)式(1)、(2)可知,為了確定I/O進(jìn)程數(shù)目n的大小,需要兩方面的信息:一是目標(biāo)模式程序的相關(guān)I/O特征,包括周期的時間長度、I/O請求塊的大小、一個周期內(nèi)I/O請求塊的數(shù)目;二是運(yùn)行平臺相關(guān)信息,即不同I/O進(jìn)程數(shù)目下PnetCDF庫的寫入帶寬。因此,為了解決該問題設(shè)計(jì)了如圖4所示的解決方案。

        圖4 參數(shù)自動選擇過程圖

        通過目標(biāo)地球系統(tǒng)模式程序的預(yù)運(yùn)行利用CFIO庫收集其I/O請求的痕跡信息,即Trace文件;然后用Trace分析子程序得到目標(biāo)模式程序的I/O特征信息并寫入到配置文件中。同時,對于每一個不同的運(yùn)行平臺,需要用帶寬測試子程序測試不同I/O進(jìn)程數(shù)目下PnetCDF的聚合寫入帶寬,并將測試結(jié)果寫入I/O速度記錄文件中。之后,利用配置文件中目標(biāo)模式相關(guān)信息和I/O速度記錄文件中的平臺相關(guān)信息,通過參數(shù)計(jì)算子程序根據(jù)式(1)、(2)進(jìn)行計(jì)算,得出最后需要的I/O進(jìn)程數(shù)目和緩沖區(qū)大小并打印到屏幕上。最后,可以根據(jù)所得到的參數(shù)對CFIO進(jìn)行設(shè)置,正式執(zhí)行目標(biāo)模式程序。在此過程中,用戶僅需要通過命令行依次調(diào)用帶寬測試、Trace分析和參數(shù)計(jì)算三個子程序,即可自動地得到適合于當(dāng)前運(yùn)行平臺和目標(biāo)地球系統(tǒng)模式的合適參數(shù)。

        3.3 帶寬測試子程序

        帶寬測試子程序負(fù)責(zé)針對不同的運(yùn)行平臺測試不同I/O進(jìn)程數(shù)目下的PnetCDF庫總體寫入帶寬,在同一個平臺上帶寬測試子程序只需要運(yùn)行一次。該子程序輸入為一個2的冪的正整數(shù)X,輸出為I/O速度記錄文件。

        帶寬測試子程序的核心是一個MPI測試程序,該程序調(diào)用PnetCDF庫進(jìn)行數(shù)據(jù)輸出,生成500個變量,每個變量為一個二維雙精度浮點(diǎn)數(shù)數(shù)組,數(shù)組大小為4 096×2 048。所有的變量都輸出到同一個NetCDF文件中,最終文件大小為32 GB,程序的輸出為32 GB除以程序運(yùn)行時間,即為當(dāng)前進(jìn)程數(shù)目下的PnetCDF庫的寫入總帶寬。帶寬測試子程序用腳本從1開始以2的倍增直至X的進(jìn)程數(shù)目調(diào)用MPI測試程序,并將I/O進(jìn)程數(shù)目和相應(yīng)的I/O寫入帶寬結(jié)果寫入I/O速度記錄文件中。

        在實(shí)際CFIO使用過程中,I/O進(jìn)程的數(shù)目可以為不大于計(jì)算進(jìn)程數(shù)的任意正整數(shù),出于效率和成本的考慮,在帶寬測試子程序中不能夠?qū)τ诿總€I/O進(jìn)程數(shù)目的PnetCDF寫入帶寬進(jìn)行測試。僅對2的正整數(shù)次冪數(shù)目的I/O進(jìn)程I/O帶寬測試,如果在后續(xù)的參數(shù)選擇子程序計(jì)算中需要用到的I/O進(jìn)程數(shù)目恰好在測試過的列表中,將會直接將測試結(jié)果返回;如果用到帶寬測試子程序并沒有實(shí)際測試過的I/O進(jìn)程數(shù)目下的總體寫入帶寬,則需要利用已有的數(shù)據(jù)進(jìn)行估計(jì)。Li等人在對PnetCDF庫吞吐量的測試后發(fā)現(xiàn)[9],其吞吐量的變化趨勢為先隨著進(jìn)程數(shù)增加而增加,到達(dá)峰值之后再隨著進(jìn)程數(shù)的增加略有回落,實(shí)際測試的結(jié)果也是如此。這是由于PnetCDF庫后端調(diào)用了MPI-IO,而MPI-IO的聚合I/O采用兩階段I/O實(shí)現(xiàn)。以讀操作為例,進(jìn)程間通過互相通信交換各自需要讀取的數(shù)據(jù)段進(jìn)而得到一個全局的I/O視圖,MPI-IO的一個實(shí)現(xiàn)ROMIO[13]會根據(jù)全局視圖重新確定每個進(jìn)程需要讀取的數(shù)據(jù)段,然后執(zhí)行兩階段I/O:第一階段為I/O階段,每個進(jìn)程分別讀取自己負(fù)責(zé)的數(shù)據(jù)段;第二階段為通信階段,進(jìn)程間通過通信從其他進(jìn)程獲取自己原本應(yīng)該讀取的數(shù)據(jù)段。當(dāng)I/O進(jìn)程較少時,PnetCDF獲益于進(jìn)程增加帶來的并行寫入效率的增加,因此總體吞吐量隨之增加;而受限于底層并行文件系統(tǒng)的寫入帶寬限制,PnetCDF庫的吞吐量會達(dá)到峰值;之后隨著進(jìn)程數(shù)的進(jìn)一步增加,兩階段I/O中的通信階段代價會隨之增大,因此總體的吞吐量會略有下降。

        為了擬合這種先增加后減小的變化趨勢,采用三次樣條插值算法來對未知吞吐量數(shù)值進(jìn)行估計(jì)。三次樣條插值算法[14]是一種常見的插值算法,被廣泛應(yīng)用于各種理論研究和實(shí)際問題中,例如圖形圖像領(lǐng)域、數(shù)據(jù)同化領(lǐng)域[15-16]等等。相較于雙線性等算法,三次樣條算法能獲得光滑連續(xù)的插值結(jié)果,更能滿足PnetCDF吞吐量連續(xù)變化的數(shù)據(jù)特點(diǎn),而且可以保證插值后的曲線仍滿足PnetCDF庫吞吐量先增大后減少的特征。具體的擬合效果將在后續(xù)實(shí)驗(yàn)部分呈現(xiàn)。

        3.4 Trace分析子程序

        Trace分析子程序負(fù)責(zé)根據(jù)I/O Trace文件統(tǒng)計(jì)目標(biāo)地球系統(tǒng)模式程序的I/O特征信息,包括周期時間長度、一個周期內(nèi)I/O請求數(shù)目、I/O平均請求大小等信息,其輸入是目標(biāo)模式程序的I/O Trace文件,輸出為配置文件。

        模式的I/O Trace文件是預(yù)執(zhí)行階段產(chǎn)生的,重新編寫了CFIO庫的兩個函數(shù),其名稱和功能如表1所示。

        表1 函數(shù)名稱及功能

        cfio_init函數(shù)是CFIO在PnetCDF接口的基礎(chǔ)上新增加的一個函數(shù),其主要作用是對CFIO的客戶端、服務(wù)器進(jìn)行初始化設(shè)置。對于cfio_init函數(shù),加了一個標(biāo)志位參數(shù)flag,用flag參數(shù)的值來表示是否需要進(jìn)行I/O Trace輸出,若flag值為0,表示正式運(yùn)行程序,無需進(jìn)行I/O Trace輸出,在cfio_init函數(shù)中將全局變量tracing_flag設(shè)置為0;若flag值為1,表示模式程序處于預(yù)執(zhí)行階段,需要進(jìn)行I/O Trace的輸出,將全局變量tracing_flag設(shè)置為1。cfio_recv函數(shù)是CFIO服務(wù)器用于接收I/O請求并判斷是否將其放入緩沖區(qū)的函數(shù),在cfio_recv函數(shù)中先進(jìn)行判斷tracing_flag的值,如果tracing_flag值為0,則進(jìn)行之前的操作;如果tracing_flag的值為1,則在將I/O請求加入緩沖區(qū)之前,按照維度遍歷各個維度上count數(shù)組,即維度數(shù)據(jù)大小記錄數(shù)組,將各個維度大小相乘得到此次I/O請求的數(shù)據(jù)塊大小并同I/O請求到達(dá)時刻一起輸出到屏幕上,在程序預(yù)執(zhí)行的過程中將打印到屏幕的信息重定向到I/O Trace文件中。

        在Trace分析子程序中,先對I/O Trace文件中I/O請求塊大小信息和時間信息分開進(jìn)行處理。根據(jù)3.1節(jié)對于地球系統(tǒng)模式中I/O特征的分析可知,I/O請求大小是分段一致的,為了保證在所有的周期內(nèi)均不發(fā)生堵塞,需要統(tǒng)計(jì)出I/O請求塊的最大值MaxSize并統(tǒng)計(jì)出I/O請求的總數(shù)量SumCount,這些操作僅需要對Trace中的塊大小信息進(jìn)行一次遍歷即可獲得。而對于周期的確定則相對復(fù)雜,首先要對Trace中的原始時間信息進(jìn)行處理,CFIO中輸出的時間是CFIO客戶端啟動之后的相對時間,單位為ms。為了便于后續(xù)操作,第一遍遍歷以第一次I/O請求發(fā)出時間為基準(zhǔn)計(jì)算出每一個I/O請求到達(dá)的相對時間,同時以秒為單位對相對時間進(jìn)行向下取整;之后,第二次遍歷時間信息,統(tǒng)計(jì)從第0到最后每一秒到達(dá)的I/O請求數(shù)目;第三次遍歷是為了確定整個I/O過程的中各個I/O階段請求個數(shù)最大值信息,記為MaxBlkNum;第四次遍歷是記錄I/O請求個數(shù)最大值出現(xiàn)的次數(shù)PeriodCount以及峰值第一次出現(xiàn)的時刻T1和最后一次出現(xiàn)的時刻Tend,則最后周期時間長度:

        即用I/O請求個數(shù)最大值出現(xiàn)的次數(shù)表示在整個運(yùn)行過程中的周期個數(shù)PeriodCount,而Tend與T1之間間隔了(PeriodCount-1)個完整的周期,兩者相除即可得到每一個周期的時間長度。最后Trace分析子程序會將得到信息:I/O請求塊大小的最大值MaxSize、I/O請求的總數(shù)量SumCount、周期個數(shù)PeriodCount以及周期時間長度T以文本的形式寫入配置文件中輸出。

        3.5 參數(shù)選擇子程序

        參數(shù)自動選擇程序負(fù)責(zé)根據(jù)記錄在I/O速度記錄文件中的平臺相關(guān)信息和記錄在配置文件中的目標(biāo)模式相關(guān)I/O特征信息,計(jì)算出合適的CFIO庫I/O進(jìn)程數(shù)目和緩沖區(qū)大小。其輸入為帶寬測試子程序和Trace分析子程序的輸出文件即I/O速度記錄文件和配置文件還有預(yù)執(zhí)行時計(jì)算進(jìn)程的數(shù)目M,預(yù)執(zhí)行時I/O進(jìn)程數(shù)N,輸出為合適的I/O進(jìn)程數(shù)n和CFIO服務(wù)器端緩沖區(qū)大小BufferSize,并將結(jié)果打印到屏幕上。

        整個計(jì)算過程的偽代碼如圖5所示,在整個參數(shù)選擇計(jì)算過程中,先根據(jù)I/O Trace文件中的信息計(jì)算出要保證在一個周期內(nèi)寫入所有I/O請求所需要的PnetCDF寫入帶寬Threshold,即用Trace中I/O請求數(shù)量之和SumCount與周期數(shù)PeriodCount相除得到每個周期I/O請求的數(shù)量,乘I/O請求塊大小的最大值MaxSize即為每一個周期最多處理的數(shù)據(jù)總量,再與周期時長T相除就可以得到所需要的寫入帶寬。之后,遍歷I/O速度記錄文件,得到S1、S2、S3和P1、P2、P3六個參數(shù),其中S1表示I/O處理速度的峰值,S2表示在I/O速度上升階段第二大的值,S3表示在I/O速度下降階段第二大的值,而P1、P2、P3表示其各自對應(yīng)的I/O進(jìn)程數(shù)。接著,對多種情況展開討論,如果Threshold大于S1,則表明可能的取值會在(P2,P3)區(qū)間內(nèi),對區(qū)間內(nèi)所有可以整除計(jì)算進(jìn)程數(shù)量M的值從小到大進(jìn)行遍歷,如果在I/O記錄文件中存在則直接與Threshold值比較,如果不存在則進(jìn)行插值比較,若存在大于Threshold的值則跳出循環(huán)。如果Threshold小于S1,需要找到其所在的速度區(qū)間的最小值S4和最大值S5及其對應(yīng)的I/O進(jìn)程數(shù)目P4和P5,其中S5有可能與S1、S2重合。之后從小到大遍歷[S4,S5]區(qū)間,對于每一個可以被M整除的值對應(yīng)的總體寫入帶寬進(jìn)行插值操作,如果出現(xiàn)大于Threshold的值將直接跳出循環(huán)。

        圖5 參數(shù)選擇程序偽代碼

        對于CFIO服務(wù)器端緩沖區(qū)的大小,根據(jù)公式(2)可知,BufferSize=MaxBlkNum×MaxSize,即I/O請求數(shù)目的峰值與I/O請求塊大小的最大值相乘,可以根據(jù)Trace信息得到結(jié)果。

        如果經(jīng)過上述過程沒有得到合適的I/O進(jìn)程參數(shù)即找不到大于Threshold的值,說明該目標(biāo)模式程序的寫入數(shù)量超過了目前平臺的寫入處理能力,必然會出現(xiàn)堵塞,需要在寫入速度峰值之前選擇盡量多的I/O進(jìn)程;如果找到了合適的I/O進(jìn)程數(shù)n,將會連同BufferSize一起打印到屏幕上。

        4 測試分析

        在清華大學(xué)“探索100”百萬億次集群系統(tǒng)上,以海洋模式POP為目標(biāo)程序,對該參數(shù)自動選擇程序進(jìn)行了測試?!疤剿?00”集群的每個計(jì)算節(jié)點(diǎn)采用兩個Intel Xeon X5670六核處理器,每個處理器主頻為2.39 GHz,配有12 MB Cache;每個節(jié)點(diǎn)內(nèi)存為32 GB,所有節(jié)點(diǎn)通過InfiniBand QDR通信網(wǎng)絡(luò)實(shí)現(xiàn)高速通信,理論帶寬為40 GB/s;使用Lusture并行文件系統(tǒng)作為其底層文件系統(tǒng),配置為1個元數(shù)據(jù)服務(wù)器(MDS)和40個對象存儲目標(biāo)(OST),實(shí)測寫帶寬為4 GB/s;計(jì)算節(jié)點(diǎn)運(yùn)行的操作系統(tǒng)為RedHat Enterprise Linux 5.5,所有程序使用Intel編譯器v11.1編譯,MPI版本為Intel MPIv4.0.2。

        4.1 擬合效果測試

        在“探索100”上運(yùn)行帶寬測試子程序,指定的最大進(jìn)程數(shù)為256,得到的結(jié)果如表2所示。

        表2 不同進(jìn)程數(shù)目下PnetCDF寫入帶寬

        為了驗(yàn)證插值算法的有效性,額外測試了當(dāng)I/O進(jìn)程數(shù)目為12、24、48、96和144時PnetCDF庫的總體寫入帶寬的數(shù)值。如圖6所示,其中藍(lán)色圓圈代表帶寬測試子程序中測量的寫入帶寬值,綠色曲線代表根據(jù)測量值插值獲得的曲線,而紅色折線代表了相應(yīng)I/O進(jìn)程數(shù)目時真實(shí)的寫入帶寬。根據(jù)結(jié)果可以發(fā)現(xiàn),立方插值的結(jié)果反映了PnetCDF庫總體寫入帶寬先增長后下降的趨勢。同時在I/O進(jìn)程數(shù)值較小時,擬合結(jié)果與實(shí)測值差距較小,隨著I/O進(jìn)程增大測量密度的降低,誤差稍有增大,總體效果在可以接受的范圍內(nèi)。

        圖6 三次樣條插值效果

        4.2 對海洋模式POP的測試

        POP是美國洛斯阿拉莫斯國家實(shí)驗(yàn)室(Los Alamos National Laboratory)開發(fā)的海洋數(shù)值預(yù)報模式,利用POP模式可以推進(jìn)10年期和大尺度氣候預(yù)測科學(xué)的發(fā)展,現(xiàn)在已經(jīng)成為許多氣候模擬器中的標(biāo)準(zhǔn)模塊。

        在本次實(shí)驗(yàn)中,將POP的重啟動文件輸出頻率設(shè)置為每10步一輸出,映像文件和歷史文件設(shè)置為每2步一輸出,程序共運(yùn)行40步,計(jì)算進(jìn)程數(shù)M為120,在預(yù)執(zhí)行階段采用120個I/O進(jìn)程,CFIO服務(wù)器端緩沖區(qū)大小設(shè)置為3 GB。

        利用Trace分析子程序可以得到模式I/O特征信息為:I/O請求塊最大值MaxSize為0.55 MB,I/O請求總數(shù)量SumCount為3 064個,周期個數(shù)PeriodCount為4,周期時長T為110 s。得出的滿足條件的最小寫入帶寬為:

        Threshold=120×3 064×0.55/4×110=459.6 MB/s

        利用參數(shù)自動選擇程序得到I/O進(jìn)程數(shù)目為24,緩沖區(qū)大小為 1 141.25 MB,其中Throughput(24)擬合的結(jié)果為469.876 MB/s,大于Threshold值。

        為了驗(yàn)證參數(shù)自動選擇程序的正確性,在計(jì)算進(jìn)程數(shù)目固定為120的情況下,分別用I/O進(jìn)程數(shù)為20和24運(yùn)行原有的POP程序,同時在CFIO服務(wù)器端cfio_recv函數(shù)中,在每一個請求加入緩沖區(qū)之間輸出已用緩沖區(qū)大小信息和時間信息,并測量POP的整體運(yùn)行時間。

        如圖7所示,當(dāng)I/O進(jìn)程為20個時,在340 s左右由于緩沖區(qū)已滿,CFIO服務(wù)器堵塞不接受新的I/O請求,直到后端PnetCDF庫處理讓緩沖區(qū)有了新的空間,才會讓新的I/O請求進(jìn)入緩沖區(qū),所以造成了I/O請求的時間分布被拉長,且在340 s處出現(xiàn)了每秒只有50個左右的I/O請求進(jìn)入緩沖區(qū),進(jìn)而影響了模式程序的整體運(yùn)行時間。當(dāng)I/O進(jìn)程為20個時,POP運(yùn)行40步需要524.133 s;當(dāng)I/O進(jìn)程為24時,POP運(yùn)行40步僅需要434.038 s。

        而對于已用緩沖區(qū)信息,以秒為單位統(tǒng)計(jì)每秒內(nèi)緩沖區(qū)使用大小最大值,結(jié)果如圖8所示。

        圖7 POP計(jì)算進(jìn)程120,計(jì)算進(jìn)程20和24對比

        圖8 CFIO服務(wù)器端緩沖區(qū)使用情況

        緩沖區(qū)使用數(shù)量即圖8中藍(lán)色線在程序運(yùn)行過程中始終沒有超過本文通過參數(shù)選擇子程序確定的1 141.25 MB的橫線,即圖中的紅色線。

        由以上分析可以認(rèn)為,這套參數(shù)自動選擇程序確實(shí)為海洋模式POP選擇了在現(xiàn)有平臺上的最優(yōu)參數(shù),既滿足了性能的需求又避免了資源的浪費(fèi)。

        5 結(jié)束語

        面向高分辨率地球系統(tǒng)模式的并行I/O庫CFIO的出現(xiàn),通過I/O轉(zhuǎn)發(fā)技術(shù)實(shí)現(xiàn)了I/O過程與計(jì)算過程的重疊,提高了模式的整體性能。但是,對于緩沖區(qū)大小和進(jìn)程數(shù)目的管理僅僅依靠過去經(jīng)驗(yàn)式的參數(shù)指定方式會因?yàn)镮/O過程與計(jì)算過程無法完美重疊而造成性能損失或者資源浪費(fèi),基于CFIO開發(fā)了一套參數(shù)自動選擇程序,CFIO的使用者僅需要通過命令行的方式運(yùn)行三個子程序就可以自動地獲得針對當(dāng)前平臺當(dāng)前應(yīng)用的CFIO最佳參數(shù)。通過目標(biāo)模式的預(yù)執(zhí)行在CFIO的服務(wù)器端搜集模式I/O相關(guān)信息,并利用Trace分析子程序得出I/O塊大小、數(shù)目等統(tǒng)計(jì)信息,結(jié)合帶寬測試子程序得到的平臺吞吐量相關(guān)信息,可以得到將I/O過程完美隱藏在計(jì)算過程中的參數(shù)設(shè)置。

        對這套參數(shù)自動選擇程序在POP和CICE兩種分量模式上進(jìn)行了測試。根據(jù)其提供的結(jié)果對CFIO進(jìn)行設(shè)置可以發(fā)現(xiàn),在相應(yīng)參數(shù)下,POP和CICE都可以在使用盡量少的計(jì)算資源的情況下取得理論上最好的加速效果,可以讓地學(xué)研究人員在模式中更加方便地使用CFIO。

        [1]王斌,周天軍,俞永強(qiáng).地球系統(tǒng)模式發(fā)展展望[J].氣象學(xué)報,2008,66(6):857-869.

        [2]Strand G.Community earth system model data management:policies and challenges[J].Procedia Computer Science,2011,4:558-566.

        [3]Huang X M,Wang W C,F(xiàn)u H H,et al.A fast input/output library for high-resolution climate models[J].Geoscientific Model Development,2014,7(1):93-103.

        [4]Dennis J M,Edwards J,Loy R,et al.An application-level parallel I/O library for Earth system models[J].International Journal of High Performance Computing Applications,2012,26(1):43-53.

        [5]Docan C,Parashar M,Klasky S.Enabling high speed asynchronousdataextraction and transferusing DART[J].Concurrency and Computation:Practice and Experience,2010,22(9):1181-1204.

        [6]Lawrence D,Yang L,Oleson K,et al.Community earth system model[Z].2010-10.

        [7]Corbett P,F(xiàn)eitelson D,F(xiàn)ineberg S,et al.Overview of the MPI-IO parallel I/O interface[M]//Input/Output in Parallel and Distributed Computer Systems.[S.l.]:Springer US,1996:127-146.

        [8]Rew R,Davis G.NetCDF:an interface for scientific data access[J].Computer Graphics and Applications,1990,10(4):76-82.

        [9]Li J,Liao W,Choudhary A,et al.Parallel netCDF:a highperformance scientific I/O interface[C]//Supercomputing,2003 ACM/IEEE Conference.[S.l.]:IEEE,2003.

        [10]Recio R,Culley P,Garcia D,et al.An RDMA protocol specification,IETF Internet-draft draft-ietf-rddp-rdmap-03.txt(work in progress)[R].2005.

        [11]Smith R D,Gent P R.Reference manual for the Parallel Ocean Program(POP),ocean component of the Community Climate System Model(CCSM2.0 and 3.0),TechnicalReportLA-UR-02-2484[R].Los AlamosNational Laboratory,2002.

        [12]Hunke E C,Lipscomb W H.CICE:the Los Alamos sea ice model documentation and software user’s manual,Tech Rep LA-CC-06012[R].Los Alamos National Laboratory,2004.

        [13]Thakur R,Gropp W,Lusk E.Data sieving and collective I/O in ROMIO[C]//Proceedingsofthe 7th Symposium on Frontiers of Massively Parallel Computation(Frontiers’99).[S.l.]:IEEE,1999:182-189.

        [14]李慶揚(yáng),王能超,易大義.數(shù)值分析[M].5版.北京:清華大學(xué)出版社,2008:41-44.

        [15]Endr?di G.Multidimensional spline integration of scattered data[J].Computer Physics Communications,2011(6):1307-1314.

        [16]Fahmy M F,F(xiàn)ahmy G,F(xiàn)ahmy O F.B-spline wavelets for signal denoising and image compression[J].Signal,Image and Video Processing,2011,5(2):141-153.

        猜你喜歡
        子程序緩沖區(qū)數(shù)目
        有機(jī)物“同分異構(gòu)體”數(shù)目的判斷方法
        嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
        《哲對寧諾爾》方劑數(shù)目統(tǒng)計(jì)研究
        牧場里的馬
        淺談子程序在數(shù)控車編程中的應(yīng)用
        關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
        子程序在數(shù)控車加工槽中的應(yīng)用探索
        西門子840D系統(tǒng)JOG模式下PLC調(diào)用并執(zhí)行NC程序
        地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
        電視技術(shù)(2012年1期)2012-06-06 08:13:58
        精品久久综合日本久久综合网| av无码国产在线看免费网站| 国产成人涩涩涩视频在线观看| 国产一区二区波多野结衣| 国产成人精品人人做人人爽| 在线视频一区二区国产| 艳妇臀荡乳欲伦交换h在线观看| 国产精品亚洲二区在线观看| 国产最新AV在线播放不卡| 少妇高潮太爽了免费网站| 国产91久久精品成人看网站| av网站免费线看精品| 性生交大全免费看| 日本一区二区啪啪视频| 亚洲五码av在线观看| 中文字幕亚洲无线码在线一区| 久久久噜噜噜www成人网 | 日韩精品一区二区午夜成人版| 国产无码夜夜一区二区| 中文字幕av人妻一区二区| 日本伦理精品一区二区三区| 99久久久无码国产精品性| 亚洲av第一页国产精品| 成人国产永久福利看片| 久久国产精品亚洲我射av大全| 极品尤物一区二区三区| 亚洲国产人在线播放首页| 国产精品美女一级在线观看| 国产91精品在线观看| 亚洲热线99精品视频| 欧美疯狂做受xxxx高潮小说| 亚洲熟妇大图综合色区| 成人国产高清av一区二区三区| 精品国产精品国产偷麻豆| 极品尤物高潮潮喷在线视频| 国内自拍视频在线观看h| 久久午夜精品人妻一区二区三区| 品色永久免费| 国产极品视觉盛宴在线观看| 亚洲日本中文字幕高清在线| 欧美成人在线视频|