什麼是異構計算?

異構計算主要是指使用不同類型指令集和體系架構的計算單元組成系統的計算方式。異構計算已經無處不在,從超算系統到桌面到雲到終端,都包含不同類型指令集和體系架構的計算單元,下面先從幾個系統瞭解下異構計算超算系統。
天河-2:包括16,000個計算節點,每個節點 2*Xeon (IveBridge)+3*Phi。Total 3,120,000 Core, Linpack測試基準爲33.86 petaFLOPS ,Power 17.6 megawatts。編程框架:OpenMC/OpeMP。
Mac Pro: Intel Xeon E5 (6/8/2 cores) + Dual AMD FirePro D500 GPU (1526 stream processors, 2.2 teraflops, 3-way 4k video)。編程框架:CUDA、OpenCL、Metal。
Amazon Linux GPU Instances g2.8xlarge: 4 GPU (each with 1,536 CUDA cores and 4 GB of video memory and the ability to 4* 1080p@30fps), 32 vCPU 。編程框架:CUDA,OpenCL。
Qualcomm Snapdragon 820 : octa-core CPU+ Adreno 530 GPU+ Hexagon 680 DSP,編程框架:MARE,OpenCL。
顯然,異構計算系統包含了不同異構計算單元,如CPU、GPU、DSP、ASIC、FPGA等。除了異構硬件單元,不同異構計算平臺採用的編程框架也不盡相同。那麼,爲什麼要用異構計算?
異構計算優勢主要提現在性能、性價比、功耗、面積等指標上,在特定場景,異構計算往往會表現出驚人的計算優勢。
Google Brain:1,000臺服務器 (16,000 CPU核) 模擬simulating a model of the brain with a billion synapses.
Nvidia:three GPU-accelerated servers: 12 GPUs in total, 18,432 CUDA processor cores.
The Nvidia solution uses 100 times less energy, and a 100 times less cost.
關於GPU和CPU的詳細分析和對比,請參考文章:GPU技術的現在和ASIC的未來、談談GPU和CPU爲何不同和GPU關鍵參數和應用場景。
除OpenCL之外,還有很多編程框架?異構並行計算框架是充分發揮異構硬件性能和屏蔽硬件差異的關鍵,但目前業界不存在一個統一標準。
OpenCL是業界主流公司推動的異構並行計算編程標準。OpenCL屬於性能層,業界很多產能層框架對接OpenCL。
Intel、ARM、高通的異構硬件均支持OpenCL軟件設計。
Intel Xeon+FPGA異構芯片支持OpenCL。
Nvidia CUDA、Apple Metal是針對各自異構硬件設計的計算私有框架,是封閉系統,但都有廣泛的開發者支持。CUDA和OpenCL在設計理念上非常相近,但Nvidia GPU性能業界最強,有能力通過CUDA綁定用戶,比如深度學習上Nvidia GPU效果最好,開發者只能選擇CUDA。
異構硬件的一個趨勢是SOC上集成多種異構硬件。比如高通820芯片集成了ARM64+GPU+DSP等多種形態。
但傳統的計算框架只針對一種硬件設計,無法支持多形態。
高通設計了Symphony異構並行計算框架來發揮多形態異構硬件性能,同時適應未來芯片的演進。
OpenCL異構編程技術得到各大廠家的大力支持,可屏蔽異構硬件與OS差異,簡化異構覈編程複雜度,OpenCL由蘋果提出,得到業界大多數廠商的支持:如Nvidia、Apple、AMD、ARM、INTEL、TI等等,支撐GPGPU、DSP、FPGA等通用硬件加速器。
優勢:OpenCL是針對GPGPU大規模數據並行的特性所開發的底層編程框架,屏蔽各廠商GPU之間的差異,與芯片設計協同演進,C語言的擴展。
不足:性能的可移植性不足。
OpenCL編程模型中隱含了很多的硬件特徵,比如並行粒度、內存模型、存儲層次、資源粒度、內存帶寬和延遲、ISA差異等,這導致不同的加速器上的OpenCL代碼都要重新思考上述特徵。
隨着FPGA的廣泛使用,成本逐步降低,作爲軟件定義實現快速在線指令優化,對整個編譯器、運行框架、OS產生巨大影響。新架構對軟件的挑戰:
1)支持CPU+FPGA融合並行的計算框架,包括FPGA編譯和高層語言設計。
2)大規模分佈式FPGA資源管理與調度
3)高性能FPGA算法庫。
異構計算主要是指使用不同類型指令集和體系架構的計算單元組成系統的計算方式。常見的計算單元類別包括CPU、GPU、DSP、ASIC、FPGA等。
FPGA和GPU/CPU對比具有以下不同:
1.軟件定義的硬件架構:GPU/CPU硬件固定,其並行性設計是適應固定硬件。而FPGA的硬件邏輯可以通過軟件動態改變,從硬件的角度來適配軟件,從而獲得更高的計算性能。
2.更高並行性、能效比:FPGA擁有更豐富的計算資源組件,從而能夠滿足更多並行計算需求。並且能夠充分發掘軟件算法中的並行性,降低功耗。
同時,新架構融合CPU+FPGA,將成爲一種發展趨勢:
1. 異構核首次作爲一等公民:通過CPU+FPGA的融合設計,由主機+外設的Offloading模式轉變爲異構多核片上系統設計,CPU與FPGA地位等同,通信方式由板級轉向片內。
2. OpenCL帶來了FPGA的編程革命:提高了FPGA的可編程性,將程序員從複雜的硬件電路設計中解救出來,更專注於系統/算法的設計。
總結:CPU主要是做通用控制以及計算的,整個算術邏輯單元ALU佔整個芯片面積不到5%。CPU裏面包含很多控制邏輯,預測,Cache等邏輯,所以算力不高,但是什麼都能做。
CPU主要特點:主頻高,但核數有限;邏輯控制和算術運算單元、具有大量緩存,主要功能在於管理和調度任務。
GPU專門用來做浮點運算,只能作爲協處理器配合CPU完成特定計算。但GPU天然假設所有運算可以並行(GPU具有數千個計算核),整個芯片90%都是運算邏輯。所以算力非常高,通常是CPU的幾十上百倍。
GPU特點:高併發(幾千個核並),強浮點能力和高顯存帶寬。
FPGA主頻低但集成大量計算單元,流水線並行和數據並行,具備硬件編程和加速和特定應用IP核。然而,ASIC是針對某一場景優化的專用處理單元,硬件基本不可編程,採用多個IP集成,但有高性價比和能效比。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章