大家知道,不同架構的處理器硬件能力各有不同:
- CPU是標准的多指令單數據流的處理器,它適合邏輯控制以及任務調度
- GPU是單指令多數據的處理器,它支持大規模的並行計算,適合圖像渲染
- DSP是專用的數字信號處理處理器
- FPGA對高並行性,低延時的場合特別適合
異構計算設備是指在同一個電腦系統中有兩種以上、架構差異很大的計算設備,例如同時有CPU和GPU。異構計算能夠提供更靈活的組合方案。
異構計算概念的產生要從 CPU 的發展歷程說起。
現在是一個大數據的時代,隨着物聯網的廣泛應用,每時每刻都會產生海量的數據,這些數據對應着龐大的計算量,這對硬件算力的要求就越來越高了。
人們在最初提高算力的時候主要是去提高 CPU 運行的主頻,等到 CPU 的主頻提高到極限以后,就開始想辦法把 CPU 的內核做成多核,這種多核系統是一種同構(相同結構)多核的並行計算系統。
通過多核是可以明顯提高性能,但是有一些計算場景在處理數據的時候,它會需要大量的乘加的計算、而有的只需要去做一些事務性的調度或者傳輸,完成的任務各不相同,此時采用同構計算的多核CPU不能夠滿足多種計算的需求,所以人們就想到了異構計算,對於不同的任務,采用不同的架構的處理器去進行計算,做到物盡其用,提高它的算力。
這里舉個例子:現在人工智能領域非常火的英偉達顯卡,它內部的每個計算單元在最開始是去做 3D 的渲染計算用的, 它和 CPU 是不同的架構,但當它們同時存在於一個系統當中,它們可以根據各自的優勢處理不同的任務 ,充分發揮各個架構的算力,所以來說異構並行計算的系統是現在在大數據、物聯網、人工智能時代的必然產物。
但是不同的硬件處理器平台對軟件開發人員來說,開發語言、環境都是不一樣的,這為開發帶來了難度,所以一個統一的開發標准去橋接不同硬件極為關鍵,OpenCL 的出現就為異構系統並行計算提供了這樣的一個標准。
下一講 我們介紹OpenCL。