通俗讀懂:什么是異構計算?


通俗讀懂:什么是異構計算?


異構計算主要是指使用不同類型指令集和體系架構的計算單元組成系統的計算方式 。異構計算已經無處不在,從超算系統到桌面到云到終端,都包含不同類型指令集和體系架構的計算單元,下面先從幾個系統了解下異構計算超算系統 。
天河-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產生巨大影響 。新架構對軟件的挑戰:

推薦閱讀