優(yōu)化高性能計(jì)算(HPC)的性能
如何能優(yōu)化高性能計(jì)算(HPC)的性能?這個(gè)問(wèn)題問(wèn)的很好。從定性的層面上來(lái)說(shuō)這個(gè)問(wèn)題很容易回答,答案就是更快的處理器,更多容量的內(nèi)存,表現(xiàn)更佳的網(wǎng)絡(luò)和磁盤(pán)輸入/輸出子系統(tǒng)。但當(dāng)你要在決定是否購(gòu)買(mǎi)Linu集群時(shí)這樣的回答就不夠準(zhǔn)確了。2007年6月網(wǎng)上技術(shù)交流會(huì)上(Webinar)所做的這個(gè)議題對(duì)于如何提高計(jì)算機(jī)性能做了詳盡的論述。在此次議題中我們會(huì)使用更多的量化指標(biāo)來(lái)做講解。首先要論述的是對(duì)術(shù)語(yǔ)的定義來(lái)縮小此次議題的范圍。
什么是高性能計(jì)算?
高性能計(jì)算簡(jiǎn)單來(lái)說(shuō)就是在16臺(tái)甚至更多的服務(wù)器上完成某些類(lèi)型的技術(shù)工作負(fù)載。到底這個(gè)數(shù)量是需要8臺(tái),12臺(tái)還是16臺(tái)服務(wù)器這并不重要。在我們的定義下我們假設(shè)每一臺(tái)服務(wù)器都在運(yùn)行自己獨(dú)立的操作系統(tǒng),與其關(guān)聯(lián)的輸入/輸出基礎(chǔ)構(gòu)造都是建立在COTS系統(tǒng)之上。簡(jiǎn)而言之,我們正在討論的就是Linux高性能計(jì)算集群。
一個(gè)擁有20000臺(tái)服務(wù)器的信息中心要進(jìn)行分子動(dòng)力學(xué)模擬無(wú)疑是毫無(wú)問(wèn)題的,就好比一個(gè)小型工程公司在它的機(jī)房里運(yùn)行計(jì)算流體動(dòng)力學(xué)(CFD)模擬。解決工作負(fù)載的唯一限制來(lái)自于技術(shù)層面。接下來(lái)我們要討論的問(wèn)題是什么能直接加以應(yīng)用。
量度(Metrics)
時(shí)至今日已經(jīng)很少有人再討論有關(guān)Linux高性能計(jì)算集群的純性能問(wèn)題。目前我們碰到的更多是這樣的字眼:性能(Performance), 每瓦特性能(Performance/Watt), 每平方英尺性能(Performance/Square foot)和 性能價(jià)格比(Performance/dollar)等,對(duì)于上文提及的20000臺(tái)服務(wù)器的動(dòng)力分子簇來(lái)說(shuō),原因是顯而易見(jiàn)的。運(yùn)行這樣的系統(tǒng)經(jīng)常被服務(wù)器的能量消耗(瓦特)和體積(平方英尺)所局限。這兩個(gè)要素都被計(jì)入總體擁有成本(TCO)之列。在總體擁有成本(TCO)方面取得更大的經(jīng)濟(jì)效益是大家非常關(guān)注的。
接著上面的論述,此次議題的范圍我們限定在性能方面來(lái)幫助大家理解性能能耗,性能密度和總體擁有成本(TCO)在實(shí)踐中的重要性。
性能的定義
在這里我們把性能定義為一種計(jì)算率。例如每天完成的工作負(fù)載,每秒鐘浮點(diǎn)運(yùn)算的速度(FLOPs)等等。接下來(lái)的討論中我們要思考的是既定工作量的完成時(shí)間。這兩者是直接關(guān)聯(lián)的,速度=1/(時(shí)間/工作量)。因此性能是根據(jù)運(yùn)行的工作量來(lái)進(jìn)行測(cè)算的,通過(guò)計(jì)算其完成時(shí)間來(lái)轉(zhuǎn)化成所需要的速度。
定量與定性
在上個(gè)章節(jié)中我們提到,此次議題是如何對(duì)Linux高性能計(jì)算集群的性能進(jìn)行量化分析。為此我們接下來(lái)要介紹部分量化模型和方法技巧,它們能非常精確的對(duì)大家的業(yè)務(wù)決策進(jìn)行指導(dǎo),同時(shí)又非常簡(jiǎn)單實(shí)用。舉例來(lái)說(shuō),這些業(yè)務(wù)決策涉及的方面包括:
購(gòu)買(mǎi)---系統(tǒng)元件選購(gòu)指南來(lái)獲取最佳性能或者最經(jīng)濟(jì)的性能
配置---鑒別系統(tǒng)及應(yīng)用軟件中的瓶頸
計(jì)劃---突出性能的關(guān)聯(lián)性和局限性來(lái)制定中期商業(yè)計(jì)劃
原型Linux集群(Prototypical Linux Cluster)
我們文中的Linux高性能計(jì)算集群模型包括四類(lèi)主要的硬件組成部分。(1)執(zhí)行技術(shù)工作負(fù)載的計(jì)算節(jié)點(diǎn)或者服務(wù)器 (2)一個(gè)用于集群管理,工作控制等方面的主節(jié)點(diǎn) (3)互相連接的電纜和現(xiàn)在高度普及的千兆以太網(wǎng)(GBE) (4)一些全球存儲(chǔ)系統(tǒng),像由主節(jié)點(diǎn)輸出的NFS文件一樣簡(jiǎn)單易用。下面我們通過(guò)圖示1來(lái)向大家進(jìn)行詳解。
一個(gè)簡(jiǎn)單量化的運(yùn)用模型
這樣一個(gè)量化的運(yùn)用模型非常直觀。在一個(gè)集群上對(duì)既定的工作完成的時(shí)間大約等同于在獨(dú)立的子系統(tǒng)上花費(fèi)的時(shí)間:
e
(1)時(shí)間(Time)=節(jié)點(diǎn)時(shí)間(Tnode)+電纜時(shí)間(Tfabric)+存儲(chǔ)時(shí)間(Tstorage)
Time = Tnode + Tfabric + Tstorag
這里所說(shuō)的時(shí)間(Time)指的是執(zhí)行工作量的完成時(shí)間,節(jié)點(diǎn)時(shí)間(Tnode)是指在計(jì)算節(jié)點(diǎn)上花費(fèi)的完成時(shí)間,電纜時(shí)間(Tfabric)是指在互聯(lián)網(wǎng)上各個(gè)節(jié)點(diǎn)進(jìn)行互聯(lián)的完成時(shí)間,而存儲(chǔ)時(shí)間(Tstorage)則是指訪問(wèn)局域網(wǎng)或全球存儲(chǔ)系統(tǒng)的完成時(shí)間。As in the webinar,有關(guān)電纜時(shí)間(Tfabric)和存儲(chǔ)時(shí)間(Tstorage)的議題我們稍后會(huì)為大家陳述。我們先來(lái)關(guān)注節(jié)點(diǎn)時(shí)間(Tnode)這個(gè)關(guān)鍵詞。計(jì)算節(jié)點(diǎn)的完成時(shí)間大約等同于在獨(dú)立的子系統(tǒng)上花費(fèi)的時(shí)間: #p#page_title#e#
(2)節(jié)點(diǎn)時(shí)間(Tnode)=內(nèi)核時(shí)間(Tcore) +內(nèi)存時(shí)間(Tmemory)
這里所說(shuō)的內(nèi)核時(shí)間(Tcore)指的是在微處理器計(jì)算節(jié)點(diǎn)上的完成時(shí)間。而內(nèi)存時(shí)間(Tmemory)就是指訪問(wèn)主存儲(chǔ)器的完成時(shí)間。這個(gè)模型對(duì)于單個(gè)的CPU計(jì)算節(jié)點(diǎn)來(lái)說(shuō)是非常實(shí)用的,而且能很容易的擴(kuò)展到通用雙插槽(SMP對(duì)稱(chēng)多處理)計(jì)算節(jié)點(diǎn)。為了使第二套模型更加實(shí)用,子系統(tǒng)的完成時(shí)間也必須和計(jì)算節(jié)點(diǎn)的物理配置參數(shù)相關(guān)聯(lián),例如處理器的速度,內(nèi)存的速度等等。
計(jì)算節(jié)點(diǎn)
下面讓我們來(lái)一起關(guān)注圖示2中的計(jì)算節(jié)點(diǎn)原型來(lái)認(rèn)識(shí)相關(guān)的配置參數(shù)。圖示上端的是2個(gè)處理器插槽,通過(guò)前端總線(xiàn)(FSB-front side bus)與內(nèi)存控制中心(MCH)相連。這個(gè)內(nèi)存控制中心(MCH)有四個(gè)存儲(chǔ)信道。同時(shí)還有一個(gè)Infiniband HCA通過(guò)信道點(diǎn)對(duì)點(diǎn)串行(PCIe)連接在一起。
象千兆以太網(wǎng)和串行接口(SATA)硬盤(pán)之類(lèi)的低速的輸入輸出系統(tǒng)都是通過(guò)芯片組中的南橋通道(South Bridge)相連接的。在圖示2中,大家可以看到每個(gè)主要部件旁邊都用紅色標(biāo)注了一個(gè)性能相關(guān)參數(shù)。這些參數(shù)詳細(xì)的說(shuō)明了影響性能(并非全部)的硬件的特性。它們通常也和硬件的成本直接相關(guān)。舉例來(lái)說(shuō),,處理器時(shí)鐘頻率(fcore)在多數(shù)工作負(fù)荷狀態(tài)下對(duì)性能影響巨大。根據(jù)供求交叉半導(dǎo)體產(chǎn)額曲線(xiàn)原理,處理器速度越快,相應(yīng)成本也會(huì)更高。高速緩存存儲(chǔ)器的體積也會(huì)對(duì)性能產(chǎn)生影響,它能減少主頻所承載的工作負(fù)荷以提高其運(yùn)算速度。處理器內(nèi)核的數(shù)量(Ncores)同樣會(huì)影響性能和成本。內(nèi)存子系統(tǒng)的速度可以根據(jù)雙列直插內(nèi)存模塊頻率(fDIMM)和總線(xiàn)頻率(fBus)進(jìn)行參數(shù)化,它在工作負(fù)荷狀態(tài)下也對(duì)性能產(chǎn)生影響。同樣,電纜相互連接(interconnect fabric)的速度取決于信道點(diǎn)對(duì)點(diǎn)串行的頻率。而其他一些因素,比如雙列直插內(nèi)存模塊內(nèi)存延遲(DIMM CAS Latency),存儲(chǔ)信道的數(shù)量等都做為次要因素暫時(shí)忽略不計(jì)。
我們能使用的性能參數(shù)
在圖示2中標(biāo)明的6個(gè)性能參數(shù)中,我們保留四個(gè)和模型相關(guān)的參數(shù)。首先讓我們先忽略信道點(diǎn)對(duì)點(diǎn)串行的頻率(fPCIe),因?yàn)樗饕绊懙氖请娎|相互連接(interconnect fabric)速度的性能,這不在我們此次議題討論范圍之列。接下來(lái)讓我們注意一下雙列直插內(nèi)存模塊頻率(fDIMM)和總線(xiàn)頻率(fBus)會(huì)由于內(nèi)存控制中心(MCH)而限于固定比率。在目前使用的雙核系統(tǒng)中,這些比率最具代表性的是4:5, 1:1, 5:4。我們一般情況下只會(huì)用到其中的一個(gè)。高速緩存存儲(chǔ)器的體積非常重要。在這個(gè)模型中我們保留這個(gè)參數(shù)。內(nèi)核的數(shù)量(Ncores)和內(nèi)核頻率(fcore)也非常重要,保留這兩個(gè)參數(shù)。
高性能計(jì)算(HPC)模型
接下來(lái)的章節(jié)我們講解的是數(shù)學(xué)運(yùn)用模型。這但對(duì)于數(shù)學(xué)運(yùn)算是個(gè)挑戰(zhàn),讓我們一起來(lái)關(guān)注這個(gè)模型。
這第二個(gè)模型的基本形式在計(jì)算機(jī)體系研究領(lǐng)域已經(jīng)存在了很多年。A普通模式是:
(3) CPI = CPI0 + MPI * PPM
這里的CPI指的是處理器在工作負(fù)荷狀態(tài)下每執(zhí)行一個(gè)指令的周期。CPI0是指內(nèi)核CPI,MPI I則是指在工作負(fù)荷狀態(tài)下高速緩存存儲(chǔ)器每個(gè)指令失誤的次數(shù)(注釋?zhuān)涸诟咝阅苡?jì)算領(lǐng)域,MPI主要用于信息傳遞界面,在此處主要是指處理器構(gòu)造慣例),PPM是指以處理器時(shí)鐘滴答聲為單位對(duì)高速緩存存儲(chǔ)器每個(gè)指令失誤的次數(shù)的記錄。第二和第三個(gè)方程式相互吻合。這第一個(gè)術(shù)語(yǔ)代表的是處理器,第二個(gè)術(shù)語(yǔ)代表的是內(nèi)存。
通過(guò)圖示我們可以直觀的看到,假設(shè)每項(xiàng)工作下執(zhí)行的P指令的工作負(fù)荷與代表處理器的頻率的內(nèi)核頻率(每秒鐘處理器運(yùn)行周期的單位)再與方程式(3)相乘,就得到了方程式(4):
Tnode = (CPIo * P) * (1 / fcore) + (MPI * P) * PPM * (1 / fcore)
在這里我們要注意(CPIo * P)是以每項(xiàng)工作分配下處理器的運(yùn)行周期為單位,對(duì)微處理器架構(gòu)上運(yùn)行的既定工作負(fù)荷通常是個(gè)恒量。因此我們把它命名為α。(處理器周期本身無(wú)法對(duì)時(shí)間進(jìn)行測(cè)算,如果乘以?xún)?nèi)核的頻率就可以得到時(shí)間的測(cè)算標(biāo)準(zhǔn)。因此Tnode在方程式(4)的右邊)。 #p#page_title#e#
(MPI * P)也是同理。對(duì)于既定工作負(fù)荷和體系結(jié)構(gòu)來(lái)說(shuō)它也是個(gè)恒量,但它主要依賴(lài)于高速緩存存儲(chǔ)器的體積。我們把它命名為M(MBcache)。而PPM是指訪問(wèn)主存的成本。對(duì)于既定的工作負(fù)荷來(lái)說(shuō),通常是個(gè)固定的數(shù)字C。PPM乘以?xún)?nèi)存頻率和總線(xiàn)頻率的比值(fcore / fBus)就從總線(xiàn)周期(bus cycles)轉(zhuǎn)化成了處理器周期。因此PM = C * fcore / fBus。套入M(MBcache)就可以得到:
(5) Tnode = α * (1 / fcore) + M(MBcache) * (1 / fbus)
這個(gè)例子說(shuō)明總線(xiàn)頻率(bus frequency)也是個(gè)恒量,方程式(5)可以簡(jiǎn)化為方程式(6):
(6) Tnode = α * (1 / fcore) + β
在這里Tcore = α * (1 / fcore),而Tmemory = β(也就是公式2里的術(shù)語(yǔ)。我們把這些關(guān)鍵點(diǎn)關(guān)聯(lián)在一起)。首先在模型2里,公式5和公式6都有堅(jiān)實(shí)的理論基礎(chǔ),因?yàn)槲覀円呀?jīng)分析過(guò)它是如何從公式3推理而來(lái)(它主要應(yīng)用于計(jì)算機(jī)體系理論)。其次,目前的這個(gè)模型4個(gè)硬件性能參數(shù)的3個(gè)已經(jīng)包括其中。還差一個(gè)參數(shù)就是內(nèi)核數(shù)量(Ncores)。
我們用直觀的方式來(lái)說(shuō)明內(nèi)核的數(shù)量,就是假設(shè)把N個(gè)內(nèi)核看做是一個(gè)網(wǎng)絡(luò)頻率上運(yùn)行的一個(gè)內(nèi)核,我們稱(chēng)之為N*fcore。那么根據(jù)公式(6)我們大致可以推算出:
(7) Tcore ~ α / (N*fcore)
Tcore~ ( α / N) * (1 / fcore )
我們也可以把它寫(xiě)成:
(8) αN = ( α / N)
多核處理器的第一個(gè)字母Alpha可能是單核處理器的1/N次。
通過(guò)數(shù)學(xué)推算這幾乎是完全可能的。
通常情況下我們是根據(jù)系統(tǒng)內(nèi)核和總線(xiàn)頻率(bus frequencies)來(lái)衡量計(jì)算機(jī)系統(tǒng)性能,如公式(5)所闡述的。但是公式(5)的左邊是時(shí)間單位--這個(gè)時(shí)間單位指的是一項(xiàng)工作量的完成時(shí)間。這樣就能更清楚的以時(shí)間為單位說(shuō)明右側(cè)的主系統(tǒng)參數(shù)。同時(shí)請(qǐng)注意內(nèi)核的時(shí)鐘周期τcore(是指每次內(nèi)核運(yùn)行周期所需的時(shí)間)也等同于(1 / fcore)??偩€(xiàn)時(shí)鐘(bus clock)周期也是同理。
(9) Tnode = αN * τcore + M(MBcache) * τBus
這個(gè)公式的轉(zhuǎn)化也給了我們一個(gè)完成時(shí)間的模型,那就是2個(gè)基本的自變量τcore和τBus呈現(xiàn)出直線(xiàn)性變化。這對(duì)我們稍后使用一個(gè)簡(jiǎn)單的棋盤(pán)式對(duì)照表對(duì)真實(shí)系統(tǒng)數(shù)據(jù)進(jìn)行分析是有幫助的。
這個(gè)模型是如何工作的?
公式(9)中的這個(gè)模型好處何在呢?為了回答這個(gè)問(wèn)題,首先讓我們一起來(lái)分析兩項(xiàng)常用的基準(zhǔn)測(cè)試指標(biāo),Linpack(注釋?zhuān)褐笜?biāo)為實(shí)數(shù),指HPC采用高斯消元法求解一元N次稠密線(xiàn)性代數(shù)方程組的每秒處理次數(shù))和Stream(注釋?zhuān)簩?duì)單環(huán)境和多重負(fù)荷時(shí)的內(nèi)存性能進(jìn)行測(cè)評(píng)的基準(zhǔn))。我們通常會(huì)對(duì)他們進(jìn)行綜合的考量,這兩者主要適用于商業(yè)領(lǐng)域。舉例來(lái)說(shuō),Linpack基準(zhǔn)測(cè)試運(yùn)用的是邊界元素方法,主要適用于模擬飛機(jī)雷達(dá)橫截面或者模擬潛艇聲學(xué)回音。Stream基準(zhǔn)測(cè)試的核心則運(yùn)用于高性能計(jì)算應(yīng)用編碼的方方面面。他們代表了矢量或者Level 1 BLAS。這兩項(xiàng)基準(zhǔn)測(cè)試指標(biāo)都非常的有用因?yàn)樗麄儚牟煌嵌却砹烁咝阅苡?jì)算工作量頻譜的兩個(gè)極端。Linpack測(cè)試的是內(nèi)核的計(jì)算范圍,而Stream主要針對(duì)的是內(nèi)存訪問(wèn)。這兩項(xiàng)工作是對(duì)完成時(shí)間模型(1)一個(gè)很好的初始測(cè)試。
Linpack測(cè)試:內(nèi)核范圍的工作負(fù)載
圖示3向我們展示的是使用了三個(gè)不同的多核CPU(以英特爾S3000PT服務(wù)器為基礎(chǔ))的Linpack完成時(shí)間以及使用一個(gè)單獨(dú)的CPU系統(tǒng)τcore的結(jié)構(gòu)圖。第一臺(tái)CPU是英特爾公司的PentiumD(Netburst microarchitecture)雙核運(yùn)行多種頻率可達(dá)到3.2 GHz。對(duì)于這項(xiàng)工作負(fù)載Linpack完成時(shí)間數(shù)據(jù)點(diǎn)用黃色三角標(biāo)注。數(shù)據(jù)點(diǎn)連成的直線(xiàn)用黃色虛線(xiàn)表示。
第二臺(tái)CPU是英特爾公司的酷睿雙核處理器Core 2 Duo (Conroe)運(yùn)行四組頻率達(dá)到2.66 GHz。這個(gè)CPU的數(shù)據(jù)點(diǎn)和連成的直線(xiàn)用藍(lán)色標(biāo)注。第三臺(tái)CPU是英特爾公司的酷睿四核處理器Core 2 Quad(Kentsfield)運(yùn)行兩組頻率達(dá)到2.4 GHz。它的數(shù)據(jù)點(diǎn)和連成的直線(xiàn)用紅色標(biāo)注??偩€(xiàn)頻率(bus frequency)在266 MHz頻率下保持恒量。結(jié)合方程式(1)和線(xiàn)性圖可以清楚的看到β或者M(jìn)(MBcache) * (1/ fBus )都為零。 #p#page_title#e#
假設(shè)Linpack能完全脫離高速緩存存儲(chǔ)器運(yùn)行而且?guī)缀醪辉傩枰L問(wèn)主存儲(chǔ)器,那就能符合用戶(hù)的需求。我們希望Tmemory或者β也能為零,這一點(diǎn)通過(guò)線(xiàn)性圖已經(jīng)可以確認(rèn)。在這個(gè)方面模型看起來(lái)是不錯(cuò)的。接下來(lái)我們來(lái)分析每個(gè)數(shù)據(jù)點(diǎn)的變化情況。舉例來(lái)說(shuō),酷睿雙核處理器Core2 Duo的四個(gè)數(shù)據(jù)點(diǎn)連接成一條幾乎完全精確的直線(xiàn)。在這些數(shù)據(jù)點(diǎn)的范圍內(nèi),我們可以推斷系統(tǒng)真實(shí)的物理性能運(yùn)算與τcore成線(xiàn)性關(guān)系。由此我們也可以斷定這個(gè)模型一個(gè)重要的方面--那就是τcore內(nèi)的物理性能運(yùn)算成直線(xiàn)型。
Stream測(cè)試:總線(xiàn)范圍的工作負(fù)載
現(xiàn)在我們來(lái)關(guān)注一下這個(gè)線(xiàn)程的傾斜度。從方程式(9)我們知道了傾斜度與αN的值相吻合。由此我們可以推斷αN = α / N 。那就是說(shuō)多核并行的工作負(fù)載完成時(shí)間傾斜度與單核相比是在同等工作負(fù)載下完成時(shí)間傾斜度的1/N次。從酷睿雙核處理器Core 2 Duo的直線(xiàn)分析,我們會(huì)發(fā)現(xiàn)斜面值為0.154,而C酷睿四核處理器ore 2 Quad的直線(xiàn)斜面值為0.0806。這是個(gè)1.91x和期望的2x的標(biāo)準(zhǔn)比。誤差率大概在5%,這對(duì)于實(shí)際應(yīng)用來(lái)說(shuō)已經(jīng)足夠好了。
把Pentium D和酷睿雙核處理器 Core 2 Duo的傾斜度進(jìn)行對(duì)比,我們可以看到alpha (α)的另外一面。這兩個(gè)處理器都是雙核的,但是酷睿四核處理器Core 2 Duo每個(gè)時(shí)鐘周期能執(zhí)行4個(gè)SSE2指令而Pentium D只能執(zhí)行兩個(gè)。Linpack的工作負(fù)載能夠利用SSE2指令集的完成時(shí)間單位。因此我們希望Pentium D的斜面值應(yīng)該是2x酷睿雙核處理器Core 2 Duo的斜面值。
圖示4展示的是在酷睿雙核處理器Core 2 Duo平臺(tái)系統(tǒng)上執(zhí)行工作負(fù)載的Linpack和Stream結(jié)構(gòu)圖。象圖示3一樣,Linpack線(xiàn)性圖有一個(gè)接近于零的測(cè)試值傾斜度比較大。Stream的線(xiàn)性圖則正好相反。它的值相對(duì)較大,傾斜度卻非常小。這種計(jì)算行為適用于總線(xiàn)范圍內(nèi)的工作負(fù)載。處理器的速度對(duì)于Stream工作負(fù)載的完成時(shí)間影響非常小。
總線(xiàn)(bus)的頻率(類(lèi)似于MCH的速度和DIMM的速度)對(duì)Stream性能測(cè)試會(huì)有什么影響呢?從圖示5我們可以看到前端總線(xiàn)頻率(fBus)變化情況的影響。這些數(shù)據(jù)來(lái)自于使用酷睿雙核處理器Core 2 Duo的ASUS P5B系統(tǒng)。總線(xiàn)頻率(fBus)和內(nèi)核頻率(fcore)的比值固定在7上就簡(jiǎn)單了許多。總線(xiàn)頻率(fBus)和雙列直插內(nèi)存模塊頻率(fDIMM)兩項(xiàng)不同的比值分別為1:1和4:5。
圖示5中的線(xiàn)性圖說(shuō)明了內(nèi)存時(shí)間(Tmemory)的變化情況是和總線(xiàn)(bus)時(shí)鐘周期τBus成正比的。我們能看到這張圖示上有兩處截然不同的數(shù)據(jù)點(diǎn)。這些點(diǎn)和1:1 的總線(xiàn)頻率(fBus)比值相吻合而雙列直插內(nèi)存模塊頻率(fDIMM)比值是4:5。
更為復(fù)雜的工作負(fù)載:SPEC_CPU2000
讓我們來(lái)關(guān)注一下更為復(fù)雜的工作負(fù)載,完成時(shí)間的性能計(jì)算在初始參數(shù)上仍然是直線(xiàn)。由此可以看出內(nèi)存時(shí)間(Tmemory)還需要較大的高速緩存存儲(chǔ)器進(jìn)行緩沖存儲(chǔ)。這個(gè)分析讓我們意識(shí)到M(MBcache)的重要性。SPEC CPU2000 benchmark suite無(wú)疑是個(gè)不錯(cuò)的選擇。這一點(diǎn)已經(jīng)為大家所熟知。在這張圖示上我們將基線(xiàn)編譯器標(biāo)記(-O2)與每一項(xiàng)工作負(fù)載相結(jié)合。復(fù)合工作負(fù)載的完成時(shí)間剛好是單個(gè)組件工作負(fù)載的完成時(shí)間(約等于25)。
為了測(cè)試高速緩存存儲(chǔ)器體積對(duì)性能的影響程度,我們用"Gallatin"處理器系統(tǒng)來(lái)作為測(cè)試平臺(tái)。這個(gè)處理器是單核Netburst體系機(jī)構(gòu)的CPU,512KB L2和2MB L3高速緩存存儲(chǔ)器。圖示6向我們展示的是在處理器時(shí)鐘周期變化時(shí)復(fù)合工作負(fù)載的完成時(shí)間。
深藍(lán)色的數(shù)據(jù)點(diǎn)和線(xiàn)性圖符合了激活的2MB L3高速緩存存儲(chǔ)器的結(jié)構(gòu)。淡藍(lán)色的數(shù)據(jù)點(diǎn)和線(xiàn)性圖則反映了不起作用的L3高速緩存存儲(chǔ)器的結(jié)構(gòu)情況,非常有效的把高速緩存存儲(chǔ)器的體積精簡(jiǎn)到了512KB。這兩個(gè)線(xiàn)性圖都是平行線(xiàn)。斜面值是一樣的,幾乎沒(méi)什么差別。更有趣的是我們能看到,當(dāng)高速緩存存儲(chǔ)器的體積從512KB變成2MB時(shí),測(cè)試值的變化。內(nèi)存訪問(wèn)和Tmemory完成的時(shí)間總計(jì)減少了1.75x。這個(gè)結(jié)論等同于增大了總線(xiàn)(bus)和內(nèi)存頻率1.75x。對(duì)于復(fù)合工作負(fù)載來(lái)說(shuō),高速緩存存儲(chǔ)器的體積非常重要。 #p#page_title#e#
綜述
現(xiàn)在對(duì)我們的分析做一個(gè)綜述。在定性的基礎(chǔ)上我們可以輕易的對(duì)影響高性能計(jì)算性能的因素進(jìn)行羅列,比如更快的處理器,更大容量的內(nèi)存,磁盤(pán),網(wǎng)絡(luò)等等。如果是在量化的基礎(chǔ)上來(lái)回答這個(gè)問(wèn)題,答案則有較大的不同。尤其是對(duì)于那些預(yù)算有限的用戶(hù)而言,這一點(diǎn)是比較重要的。一臺(tái)速度更快的處理器會(huì)花費(fèi)更多的費(fèi)用嗎?在我的集群上需要PCIExpress Gen2時(shí)鐘緩沖器嗎?我應(yīng)該購(gòu)買(mǎi)更快的內(nèi)存來(lái)獲取每個(gè)計(jì)算節(jié)點(diǎn)上更多的內(nèi)存容量嗎?我如何能為用戶(hù)提供更大的計(jì)算機(jī)功率(在相同的年度預(yù)算前提下)?
我們?cè)噲D向大家闡明使用一個(gè)相對(duì)簡(jiǎn)單的計(jì)算節(jié)點(diǎn)運(yùn)用模型就能很好的解釋這些疑問(wèn)。對(duì)于既定的工作量和計(jì)算節(jié)點(diǎn),這個(gè)模型只需要簡(jiǎn)單的工具(那就是電子數(shù)據(jù)表)就能輕易的進(jìn)行驗(yàn)證。使用這個(gè)模型還能夠幫助我們解決如何選購(gòu),容量規(guī)劃方面的疑問(wèn)。那么回到我們最初的問(wèn)題上來(lái)"如何優(yōu)化高性能計(jì)算的性能?",答案是一切都取決于工作負(fù)載。