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