看一下結(jié)果吧!超線程(SMT)給予了Nehalem核心巨大的優(yōu)勢(shì)在多線程的應(yīng)用程序中,但是在Linpack卻并不是這樣:它使得CPU的速度降低了10%。難道我們找到了第一個(gè)多線程應(yīng)用程序,它通過(guò)Nehalem上的超線程反倒速度降低了?這并不會(huì)破壞Intel測(cè)試結(jié)果帶給我們的樂趣,因?yàn)楹芏嗥渌腍PC測(cè)試結(jié)果都表現(xiàn)出了突出的結(jié)果。AMD在市場(chǎng)方面確實(shí)領(lǐng)先了一部,基于Xeon的Nehalem幾個(gè)月后發(fā)布。
同樣,內(nèi)存子系統(tǒng)的影響是有限的,就像50%內(nèi)存方面的增加只會(huì)帶來(lái)性能上6%的增長(zhǎng)。而Math 內(nèi)核庫(kù)很好的被優(yōu)化,使得內(nèi)存速度的影響變得微乎其微。Nehalem三通道的DDR-3內(nèi)存系統(tǒng)確實(shí)給了很好的補(bǔ)償,這對(duì)于其它HPC應(yīng)用來(lái)講是一個(gè)很好的對(duì)比。
這里要澄清一下,本文并不是一篇導(dǎo)購(gòu)文章,并不能說(shuō)明處理器的優(yōu)劣。Nehalem桌面系統(tǒng)和AMD Shanghai服務(wù)器是完全不同的機(jī)器,它們的對(duì)象也是針對(duì)完全不同的市場(chǎng)。正常情況下,我們應(yīng)當(dāng)?shù)却齒eon 5500來(lái)跑這些測(cè)試,但是考慮到這是出于好奇心的提前比較,我們就做了這個(gè)測(cè)試。
我們并沒有試圖讓這兩種架構(gòu)都獲得最高可能的LINPACK分?jǐn)?shù)。我們想使用同一個(gè)二進(jìn)制代碼,該代碼對(duì)于AMD和Intel的CPU作了最好的優(yōu)化。完全優(yōu)化的二進(jìn)制代碼甚至不能在其它CPU上運(yùn)行。我們唯一的目標(biāo)就是得到一種想法:得到Nehalem和Shanghai架構(gòu)運(yùn)行一個(gè) LINPACK二進(jìn)制代碼時(shí)的一個(gè)比較結(jié)果,而這部分代碼也被優(yōu)化可以運(yùn)行在所有的機(jī)器上。AMD上的MKL?
使用Intel的Math內(nèi)核庫(kù)在AMD的CPU上運(yùn)行是一個(gè)很好的方法來(lái)促使一些激勵(lì)的爭(zhēng)辯。但是,在某些例子中,當(dāng)你的測(cè)試使用小矩陣模型時(shí),老一些的MKL版本仍然在AMD的處理器上工作的很好,你當(dāng)然不必把我的話放在心上。
把Intel Linpack 9.0(2007年中旬發(fā)布)和AMD在2007年底給出的二進(jìn)制代碼做一個(gè)對(duì)比。AMD只做出了一個(gè)K10版本,使用ACML版本4.0.0,并且使用 PGI 7.0.7編譯器來(lái)編譯Linpack(使用參數(shù):pgcc -O3 -fast -tp=barcelona-64)。
以下所有的指標(biāo)都在是帶有4GB(AMD,Intel Xeon)或者3GB(Intel Core i7)內(nèi)存的CPU上得到。SpeedStep、Powernow!以及Turbo模式都已經(jīng)禁用。
LINPACK: Intel Nehalem VS AMD Shanghai
就像預(yù)計(jì)的那樣,使用2007編譯器得到的ACML二進(jìn)制代碼比起2007年編譯的MKL 2007版本要慢一些。MKL版本可以運(yùn)行在所有支持SSE-3 的CPU上,因此,它對(duì)于我們來(lái)講也是一個(gè)非常有意思的測(cè)試。就像你從Xeon 5472(3GHz)分?jǐn)?shù)中看到的那樣,這部分代碼并沒有在使用SSE-4的最新的45納米的Intel CPU中被優(yōu)化。它是一個(gè)很好的但沒有被優(yōu)化的版本,可以被使用到Intel和AMD的CPU上。你可以很清楚地看到這一點(diǎn),因?yàn)?GHz的Xeon 5472落后于AMD的Opteron 8384。如果Intel的二進(jìn)制代碼給AMD的CPU一個(gè)很差優(yōu)化的代碼時(shí),得到這樣的結(jié)果就是不可能的。
當(dāng)我們來(lái)到2008時(shí),就必須創(chuàng)建一個(gè)新的二進(jìn)制代碼,讓AMD和Intel完全優(yōu)化的Linpack版本不能夠運(yùn)行在其它競(jìng)爭(zhēng)者的CPU上。 Intel發(fā)布了Linpack benchmark版本10.1,它并沒有針對(duì)Nehalem架構(gòu)進(jìn)行完全地優(yōu)化,但是對(duì)于45納米的Harpertown一族卻做了優(yōu)化。
AMD已經(jīng)創(chuàng)建了一個(gè)新的Linpack二進(jìn)制代碼,使用ACML 4.2和PGI 7.2-4編譯器。以下,你就可以看到這兩個(gè)CPU之間的一個(gè)比較:
底線就是這些LINPACK測(cè)試正在轉(zhuǎn)向像SPEC CPU測(cè)試那樣的目標(biāo),而編譯器和所使用的庫(kù)和CPU一樣同等重要。當(dāng)Xeon 5500實(shí)例化后,LINPACK的性能可能會(huì)更高,因?yàn)槎M(jìn)制代碼是為Penryn/Harpertown一族CPU而建立。
對(duì)于高性能計(jì)算機(jī)的人們來(lái)說(shuō),哪一個(gè)CPU+編譯器更能提供好的性能是非常有用的,但當(dāng)你編譯二進(jìn)制代碼,而這些代碼還必須在當(dāng)前所有的CPU上運(yùn)行時(shí),對(duì)于你能理解得到的性能結(jié)果也是非常有趣的。而如果你使用完全不同的二進(jìn)制代碼時(shí),你就很難比較CPU的架構(gòu)了。