對Top500超級計算機排名"非議"
2003年世界最快超級計算機日本的地球模擬器每秒運算次數高才35.8萬億次,其成本也高達2.5億美元,現在僅僅過去7年,單單單個NVIDIA的GPU每秒運算次數就超過萬億次,成本只有幾百美元,科技尤其是半導體科技發(fā)展太快了
沒什么不同,當然是個計算機愛好者都知道CPU擅長整數計算,GPU擅長浮點并行計算,現在的GPU比CPU復雜多了,超級計算機的發(fā)展就是關鍵核心CPU和GPU的發(fā)展,其他都是浮云,現在就是家庭里的個人PC比起十幾年前的超級電腦速度快多了,就像現在的什么天河1A世界第一好像很牛B,十幾年后可能連普通家庭PC都比不上。換句話說,人人都在用超級電腦,只要你懂得讓它干什么。用超級電腦當年磁帶機的時候還可以吹一吹,現在科技大爆炸時代在摩爾定律下實在沒什么好吹的(以下一點科普知識)
-------------------------------------------------------
CPU發(fā)展趨勢:不斷的整合功能模塊
通過前面詳細的介紹我們可以發(fā)現,CPU的發(fā)展趨勢就是不斷去整合更多的功能和模塊,從協(xié)處理器、到緩存、再到內存控制器甚至整個北橋?!?br />
目前AMD和Intel的所有主流CPU都已經整合了內存控制器,Intel最新的Lynnfield(Core i7 8XX和i5 7XX)已經整合了包括PCIE控制器在內的整個北橋,而Clarkdale(Core i5 6XX和i3 5XX)更是將GPU也整合了進去。
★ GPU發(fā)展趨勢:不斷的蠶食CPU功能
至于GPU,從某種意義上來說,它本身就是一顆協(xié)處理器,主要用于圖像、視頻、3D加速。之所以這么多年來沒有被CPU所整合,是因為GPU實在太復雜了,以現有的制造工藝限制,CPU不可能去整合一顆比自身規(guī)模還要大很多的GPU,它頂多只能整合一顆主流中低端的GPU,而這樣的產品只能定位入門級,無法滿足游戲玩家和高性能計算的需要。
GPU從誕生至今一步步走來,就是在不斷蠶食著原本屬于CPU的功能,或者說是幫助CPU減負、去處理哪些CPU并不擅長的任務。比如最開始的T&L(坐標轉換與光源)、VCDDVDHDBD視頻解碼、物理加速、幾何著色。而今后和未來,GPU將奪走一項CPU最重要的功能——并行計算、高精度浮點運算
GPU前途似錦:浮點運算的未來
我們知道,CPU第一個整合的就是專門用來加速浮點運算的協(xié)處理器,此后歷代SSE指令集也都是為了加強CPU的SIMD(單指令多數據流)浮點運算性能。而GPU打從一開始就被設計成為了SIMD架構(至今Cypress也還是這種架構),擁有恐怖浮點運算能力的處理器。當今GPU的浮點運算能力更是達到多核CPU的幾十倍甚至上百倍!
CPU永遠都趕不上GPU的發(fā)展速度,因此最適合進行浮點運算的顯然是GPU,CPU繼續(xù)擴充核心數目已經變得毫無意義,因此整個業(yè)界都在想方設法的發(fā)掘GPU的潛能,將所有的并行計算任務都轉移到GPU上面來。即便是Intel也看到了GPU廣闊的前景,因此著手研發(fā)GPU。
此前由于API和軟件的限制,GPU在并行計算方面的應用舉步維艱、發(fā)展緩慢,NVIDIA孤身推廣CUDA架構雖然小有成就但孤掌難鳴。好在OpenCL和DirectCompute兩大API的推出讓GPU并行計算的前途豁然開朗,此時ATI和NVIDIA又重新站在了同一起跑線上,那么很顯然誰的架構更適合并行計算,那么誰就能獲得更強的性能和更大范圍的應用,通過本文的分析可以看出,ATI的架構依然是專注于傳統(tǒng)的圖形渲染,并不適合并行計算;而NVIDIA的架構則完全針對通用計算API和指令集優(yōu)化設計,確保能發(fā)揮出接近理論值最大效能,提供最強的浮點運算性能!#p#page_title#e#
★ CPU面臨拐點:強化整數性能,浮點運算交給GPU
AMD同時擁有CPU和GPU,而且AMD在技術方面往往能夠引領業(yè)界,因此其未來發(fā)展規(guī)劃非常值得大家思考。根據AMD最新的產品路線圖來看,其下一代的高端CPU核心Bulldozer(推土機),它最大的亮點就是每一顆核心擁有雙倍的整數運算單元,整數和浮點為非對稱設計:
在一個推土模塊里面有兩個獨立的整數核心,每一個都擁有自己的指令、數據緩存,也就是scheduling/reordering邏輯單元。而且這兩個整數單元的中的任何一個的吞吐能力都要強于Phenom II上現有的整數處理單元。Intel的Core構架無論整數或者浮點,都采用了統(tǒng)一的scheduler(調度)派發(fā)指令。而AMD的構架使用獨立的整數和浮點scheduler。
據AMD透露,目前存在于服務器上的80%的操作都是純粹的整數操作,因此AMD新一代CPU大幅加強了整數運算單元而無視浮點運算單元。而且,隨著CPU和GPU異構計算應用越來越多,GPU將會越來越多的負擔起浮點運算的操作,預計未來3-5年的時間內,所有浮點運算都將會交給最擅長做浮點運算的GPU,這也就是推土機加強整數運算的真正目的。
當然,AMD和Intel都會推出CPU整合GPU的產品,不管是膠水還是原生的解決方案,其目的并不是為了消滅顯卡和GPU,而是通過內置的GPU為CPU提供強大的浮點運算能力。但由于制造工藝所限,被CPU所整合的GPU不是集成卡就是中低端,只能滿足基本需求。所以想要更強大的游戲性能和并行計算性能的話,專為浮點運算而設計的新一代架構的GPU產品,才是最明智的選擇。
所以說,CPU和GPU,誰也不可能取代誰,雙方是互補的關系,只有CPU和GPU協(xié)同運算,各自去處理最擅長的任務,才能發(fā)揮出計算機最強的效能。CPU會整合GPU的,但僅限中低端產品;GPU會取代CPU進行浮點運算的,但它仍然需要CPU來運行操作系統(tǒng)并控制整個計算機。只有當制造工藝發(fā)達到一定程度時才有可能將CPU和GPU完美融合在一起,到時候是CPU整合GPU還是GPU整合CPU都很難說,但誰被誰整合已經不重要了
Linpack測試簡介
Linpack是國際上使用最廣泛的測試高性能計算機系統(tǒng)浮點性能的基準測試。通過對高性能計算機采用高斯消元法求解一元N次稠密線性代數方程組的測試,評價高性能計算機的浮點計算性能。Linpack的結果按每秒浮點運算次數(flops)表示
-----------------------------------------------------
就是個單純的浮點測試,說它測試不全面也沒錯,現在有超級GPU超恐怖浮點計算能力的加入,可以想見超級計算機的Linpack測試速度一日千里
什么玩意!這個計算機排名也超過十年了吧.怎么從來沒有什么質疑.偏偏中國第一了就來質疑了?奧運會金牌排名幾十年沒有疑問.偏偏中國得到第一.就弄出來個什么“獎牌排名”?是不是不要臉到了極點了?質疑吧.質疑吧.質疑到你沒有遮羞步的時候.看你還質疑什么
------------------------------------
搞笑,這個排名早就有人質疑了,國內沒有報道,天涯沒有人發(fā)帖給你知道而已,現在中國第一了,大家感興趣了有人發(fā)個帖,如果以前發(fā)個Linpack質疑帖你會關心么?(給個帖提醒一下,對Linpack質疑遠在什么天河1A之前,看以下報道的日期)
#p#page_title#e#
Linpack:舊有評價體系的注定死亡
DoSERV服務器在線 3月29日原創(chuàng)報道:大約在35年前,同樣也是一個四月,美國Argonne國家實驗室應用數學所主任Jim Pool提出,應該建立一套專門解決線性系統(tǒng)系統(tǒng)問題的數學軟件及其模型——直到現在,在一系列關于Linpack的紀年表中,Jim Pool的名字仍然高居榜首。隨后,他在當年六月的一次學術會議上正式提出了自己對線性系統(tǒng)軟件包(Linear system package),也就是Linpack的想法。在此之后,Linpack這一想法正式被美國國家科學基金會所采納,Cleve Moler及其同時在沒改過國家科學基金會的資助下,開發(fā)了Linpack和EISPACK的Fortan子程序庫,這兩個程序庫作為解決線性方程和特征值問題的“法寶”代表了上世紀七十年代矩陣計算軟件的最高水平。
國際上一般就是把用Linpack基準測試出的最高性能指標作為衡量機器性能的標準。之所以選擇Linpack,主要是因為它使用廣泛而且它的指標幾乎可以在所有參加測試的系統(tǒng)上得到。雖然這些指標并不反映給定系統(tǒng)的全部系統(tǒng)性能,但可以作為對系統(tǒng)峰值性能的一個修正?!?br />
至目前為止, LINPACK 還是廣泛地應用于解各種數學和工程問題。 也由于它高效率的運算, 使得其它幾種數學軟件例如 IMSL、 MATLAB 紛紛加以引用來處理矩陣問題, 所以足見其在科學計算上有舉足輕重的地位?! ?br />
但是,在高性能計算界已經有人對其提出了不同的看法,而這些質疑聲音正在變得越來越強大,并正在動搖Linpack在高性能計算界的影響力。
Linpack的原理與特色
Linpack的出現基本上可以稱之為力學(Mechanics)分析軟件的鼻祖,并建立了數學軟件的比較機制,與此同時,提供軟件鏈接庫, 允許使用者加以修正以便處理特殊問題,兼顧了對各計算機系統(tǒng)的通用性, 并提供高效率的運算——基本上來說,Linkpack代表了線性計算評價標準的最高水平。
事實上,Linpack現在在國際上已經成為最流行的用于測試高性能計算機系統(tǒng)浮點性能的benchmark。通過利用高性能計算機,用高斯消元法求解一元N次稠密線性代數方程組的測試,評價高性能計算機的浮點性能。
Linpack測試包括三類,Linpack100、Linpack1000和HPL。Linpack100求解規(guī)模為100階的稠密線性代數方程組,它只允許采用編譯優(yōu)化選項進行優(yōu)化,不得更改代碼,甚至代碼中的注釋也不得修改。Linpack1000要求求解規(guī)模為1000階的線性代數方程組,達到指定的精度要求,可以在不改變計算量的前提下做算法和代碼上做優(yōu)化。HPL即High Performance Linpack,也叫高度并行計算基準測試,它對數組大小N沒有限制,求解問題的規(guī)??梢愿淖?,除基本算法(計算量)不可改變外,可以采用其它任何優(yōu)化方法。前兩種測試運行規(guī)模較小,已不是很適合現代計算機的發(fā)展,因此現在用較多的測試標準為HPL,而且階次N也是linpack測試必須指明的參數。
HPL是針對現代并行計算機提出的測試方式。用戶在不修改任意測試程序的基礎上,可以調節(jié)問題規(guī)模大小N(矩陣大小)、使用到的CPU數目、使用各種優(yōu)化方法等來執(zhí)行該測試程序,以獲取最佳的性能。HPL采用高斯消元法求解線性方程組。當求解問題規(guī)模為N時,浮點運算次數為(2/3 * N^3-2*N^2)。因此,只要給出問題規(guī)模N,測得系統(tǒng)計算時間T,峰值=計算量(2/3 * N^3-2*N^2)/計算時間T,測試結果以浮點運算每秒(Flops)給出。#p#page_title#e#
Linpack的局限:浮點與線性計算
Cleve Moler所為人熟知的原因并非他對Linpack計算所作出的努力,幾乎每一個數學系畢業(yè)的學生(包括我本人這個數學系畢業(yè)的不才學生),幾乎對Cleve Moler的名字都十分熟知,因為他開發(fā)了對數學計算,尤其是計算數學產生重大影響的MATLAB:
到70年代后期,身為美國New Mexico大學計算機系系主任的Cleve Moler,在給學生講授線性代數課程時,想教學生使用EISPACK和LINPACK程序庫,但他發(fā)現學生用FORTRAN編寫接口程序很費時間,于是他開始自己動手,利用業(yè)余時間為學生編寫EISPACK和LINPACK的接口程序。Cleve Moler給這個接口程序取名為MATLAB。
MATLAB時至今日已經是一種用于算法開發(fā)、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環(huán)境,在數值計算方面無比強大,可以進行矩陣運算、繪制函數和數據、實現算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域——但是,在初期,無論是Linpack和MATLAB都是以線性計算為基礎的,這從Linpack的原名即可得知。
另一方面,Linpack專注于浮點運算,首先,我們要明白,數和計算通常是按“整數”或“浮點數”進行劃分的。整數計算使用計算的所有位(如32位)記錄整數“值”。而浮點計算則使用計算的一部分位表示“值”(如23位),另一部分位表示指數(8位)。由于一部分位用來表示指數,所以浮點計算得出的值可以比整數計算得出的值大很多或是小很多。換句話說,對于給定數量的位,浮點計算的精度沒有整數計算高,但浮點計算結果的范圍卻比整數計算大很多——后面我們隨提及為何整數計算并非如人們所傳言無所大用。
這也就是說,Linpack幾乎可以被人做是一個面向數學計算領域的線性計算方法及評價標準,這也就意味著,盡管Linpack數據具有極強的評價能力,卻正顯得有些不合時宜了。
對于大部分高性能計算用戶來說,HPC被用來進行大量的科學計算,所以對于諸如石油勘探、地質勘測、天氣預報等用戶來說,非常注重服務器的浮點計算能力,而對于整數運算能力卻并不太關心,整數運算能力是指系統(tǒng)對于16位以內數據的計算精確度和速度,而浮點運算能力代表的是一個計算機系統(tǒng)對于16位以上數據的計算速度和結果精確度。所以,對于高性能計算機的用戶來說,在采購服務器的時候,對于廠商提供的SPECfp2000浮點運算基準測試要給予重點關注,而對于一般的商業(yè)用戶來說,一個計算機系統(tǒng)的浮點運算能力強或者弱,并沒有太大的實質意義,這個用戶群體更應該關注諸如TPC-C等在線事務交易處理性能。
另一方面,Linpack的出現主要是因為上世紀七十年代線性代數方程組在各個領域的應用十分廣泛,所以該軟件包就很自然地稱為測試各種機器性能的測試程序,但是隨著科學計算的深入,更多數學方法出現在人們面前,即使是線性計算方面的計算方法也獲得了強大的發(fā)展。
更有甚者,盡管Linpack作為數學型的測試程序現在仍很有生命力,但作為實際求解線性代數問題的軟件包甚至都已經開始落伍了:
1992年出現了代替Linpack以及EisPACK(特征值軟件包)的LAPACK,它使用了數值線性代數中最新、最精確的算法,同時采用了大型矩陣分解成小矩陣的方法從而可有效地使用存儲器。LAPACK是建立在BLAS1 ,BLAS2,BLAS3的基礎上的,其中BLAS2執(zhí)行矩陣-向量運算,BLAS3執(zhí)行矩陣-矩陣運算。
隨后出現的是ScaLAPACK,其被稱為LAPACK的增強版,主要為可擴放的,分布存儲的并行計算機而設計的。ScaLAPACK支持稠密和帶狀矩陣上各類操作,諸如乘法,轉置和分解等。在國際上,ScaLAPACK例程可以加入多個并行算法,并且可根據數據分布,問題規(guī)模和機器大小選擇這些算法,然而用戶卻不必關心這些細節(jié)。
高性能計算的更多基準測試方法
相較于Linpack,更多的高性能計算基準測試方法正在逐步應用到測試中,以更加可觀的衡量和對比不同高性能計算系統(tǒng)在各種不同應用上面的性能特征。
以SPECfp_rate_base2006為例,其是一項計算密集型性能指標評測,用于衡量計算機系統(tǒng)在運行大量并行任務時的浮點吞吐性能。性能指標評測包括從實際最終用戶應用開發(fā)而來的一組十四個浮點工作負載。通過將性能指標評測的拷貝數量設置成操作系統(tǒng)可識別的邏輯硬件內核數量而同時運行多個性能指標評測拷貝來測量系統(tǒng)吞吐率。報告的性能得分是按工作/小時測量的系統(tǒng)吞吐率的衡量標準。得分越高表示性能越好。
從分類上來說,綜合型、核心型、數學計算型、應用型和并行計算型等,上面所說的SPEC計算與Whetstone和Dhrystone即屬于綜合型,不過在綜合型中,后兩種基準測試方法由于編譯程序較為敏感,造成了對用戶程序性能預測的不確定性,因此已經基本上被不同類型的SPEC計算所取代,SPEC最早是作為NCGA(National computer graphics association)的一個小組20世紀80年代創(chuàng)立的,第一組基準測試程序叫SPEC89,包含10個程序; SPEC92擴從到20個程序,6個整數程序,和14個浮點程序分別稱為SPECint92,SPECfp92。隨后SPEC又發(fā)布了一些新的基準測試程序(如SPEC95,SPEChpc96,SPECweb96, SPEC2000等)。SPEC原主要是測試CPU性能的,現在強調開發(fā)能反映真實應用(如實際負載等)的基準測試程序,并已推廣至客戶/服務器計算,商業(yè)應用,I/O子系統(tǒng)等。
數學計算型基本上可以等同于Linpack計算+FFT(FFT有浮點的(就是普通的FFT),有整數的(就是離散化的FFT)),而核心型的主要包括Livemore、Fortran Kernals、NASA NAS等,而并行的主要為NPB和PARKBENCK,具體的測試方式介紹在此就不在贅述,可以從http://www.netlib.org/liblist.html查到,可以在其中的“Benchmark Programs and Reports”頁面看到比較全面的測試介紹