1. 程式人生 > >高效能運算系列之四-高效能運算中FPGA,GPU和CPU

高效能運算系列之四-高效能運算中FPGA,GPU和CPU

1. 高效能運算中FPGA,GPU和CPU的簡介

近年來,傳統用於影象處理的GPU逐漸被髮掘用來進行高效能運算,並且達到了相當好的效果,在單精度浮點運算中的速度達到5TFLOPs,在雙精度浮點運算中的速度可以達到1TFLOPs。如今效能最好的GPU處理器(比如NVidea的Tesla K20和K40)與一些其他的多核處理器(比如Intel Xeon Phi處理器以及IBM和Inter的一些處理器)相比表現出了非常好的計算效能。

FPGA傳統上是應用於單精度的定點運算,不過現在也可以浮點數進行高效能的計算,單精度浮點數的運算峰值已經超過1TFLOPs。但是運算的峰值並不能代表在特定環境下器件的持續工作效能,比如在計算2級的FFT時,Inter的80-teraflop持續工作效能只能達到其峰值效能的2.73%(20GFLOPs)。FPGA工作在一個較低的頻率下,運算峰值較低,但是可以通過硬體優化來實現對特定應用的更好的執行效率,即持續效能能達到更接近峰值運算效能的值,同時與GPU和CPU相比FPGA的功率效率更高。

一個特定的應用在不同的平臺上運算是不一樣的,對於運算結果的評估可以基於以下幾點:效能、功耗、功率效率、執行效率、成本以及其他。在本文中,我們分析每個期間在峰值效能以及能耗方面的發展趨勢,並對三者在一些科學應用的持續效能進行對比,找出對於某一特定應用的最佳運算平臺。

2. 峰值計算效能發展趨勢

2.1 GPU

GPU最初被設計用來進行影象處理並在該方面顯示出了強大的優勢,近10年來GPU逐漸被應用到通用計算領域,一般稱為GPGPU。基於其強大的平行計算能力,在一些其他的計算分析方面其效能早已可與多核CPU相媲美。

觀察多代GPU的發展,我們發現其峰值效能並不是簡單的線性增長,單精度浮點運算和雙精度浮點運算都是這樣。我們沒有辦法去簡單的描述GPU的全面的發展,因為各種GPU的結構非常多,所以在此只挑出在某個年份的最佳效能的一些GPU進行分析。

每一代GPU之間的效能提升超過1TFLOP,同時右圖中可知在某些年份工藝技術沒有提升,但是效能提升了,說明效能的增長不僅與新的製造工藝有關也與結構的優化有關。單精度和雙精度的效能差距由最初的相差10倍降到了最新一代的只差4倍左右。

關於能耗方面,GPU的功率效率(峰值效能與熱設計功耗(TDP)的比值)也是在穩定則增長,單精度的功率效率由最初的0.5GFLOPs/W增加到了GFLOPs/W,雙精度的功率效率由0.5GFLOPs/W增加到了6GFLOPs/W。這意味著GPU以一個增長的功率效率提供著一個驚人的運算效能。

GPU的外部儲存頻寬也非常高,Geforce 6800的頻寬為35 GBytes/s,K20, K20X 和 K40的頻寬分別為208,250和288 GBytes/s。.

2.2 多核CPU

通用CPU的峰值運算效能在近年來也獲得了顯著提升,圖2中顯示了部分Intel的著名CPU的峰值運算效能。

Intel最近推出的Xeon PHI 7120P處理器的峰值運算效能可以達到單精度2416GFLOPs,雙精度1208GFLOPs,Intel處理器計算效能的提升靠的是增加CPU的核數,這些處理器的功率效率和GPU相比較低。最初65nm技術的CPU的功率效率為0.1 GFLOPs/W,目前22nm技術下的CPU的功率效率已經增加到單精度9 GFLOPs/W,雙精度4.5 GFLOPs/W。

在Intel的這些處理器中,2008年出的一款多核處理器在3.16GHz頻率1.07V電壓下,峰值運算速度可以達到單精度1 TFLOP。CPU或者多核CPU的儲存器頻寬也很高。比如Xeon PHI 7120P的頻寬為352GBytes/s,比最近出的GPU稍微高一些。


2.3 FPGA

FPGA的峰值運算效能由它所包含的乘法器和LUT的資源決定,觀察Xilinx公司的一些產品發現乘法器和LUT的資源並不是線性增長的(如圖3所示)。最新的Virtex7系列FPGA中 XC7VX980T含有3600個18*18的乘法器和612000個LUT,XC7V2000T含有2160個乘法器和1221600個LUT。


如果要分析FPGA的峰值運算效能,我們需要考慮三種情況:只有加法器,只有乘法器,有乘法器和加法器。加法器可以只通過LUT就可以實現,而乘法器的實現則需要DSP和LUT的不同組合(組合結構為M0,M1,M2)。乘加運算真是這些乘法器和加法器的一一組合。

對於雙精度的峰值運算,只含有加法器運算的最佳的峰值運算效能出現在XC7V2000T FPGA中,為671GFLOPs;只含有乘法器運算的最佳峰值運算效能降為168GFLOPs;加法器和乘法器的組合運算的最佳運算效能為302GFLOPs,由XC7VX980T獲得。

FPGA的功率效率超過10GFLOPs/W,一般來說是比CPU和GPU要高的,而且隨著技術的發展FPGA的功率效率也會繼續不斷提升。比如Altera的一款能達到5TFLOPs的高效能FPGA就應用了Intel的14nm Tri-Gate,功率效率達到100GFLOPs。


2.4 峰值計算效能的趨勢

為了更好的理解GPU,CPU,FPGA的相對發展,下面選取他們中在某些年最佳的效能的產品引數進行比較,包含單精度和雙精度的運算,結果如圖6,圖7所示。

在單精度的浮點運算中,GPU的效能一直是遙遙領先。在2011年FPGA和CPU的效能都有很大提升,而在2013年CPU的效能仍然在提升,而FPGA相對於GPU 的效能下降了。在2013年之前,FPGA的效能一直優於CPU,但在2013年,出現了多核CPU比如Intel Phi,因此情況改變了。

對於雙精度浮點運算,可以看到GPU的效能除了在前幾年表現的差強人意,在2011年之後則一直領跑後兩者。同時在2011年之後CPU的效能也超過了FPGA,而且在2013年CPU和GPU的效能也已經很接近了,大概只相差5%。