什麼是異構開發或者編程呢?編程
雖然本身從事CPU+GPU相關工做,可是對異構這個概念以前還不太明確,通過結合開發經驗以及查閱資料,對此概念有了必定的理解。架構
學過計算機組成原理的人都會很是熟悉CPU原理及組成,CPU內部結構是由控制單元、運算單元、存儲單元等主要部分組成,其經過地址總線與地址總線實現數據的操做,此處再也不多說了;但當處理大量圖像圖形渲染時,CPU效率不能知足要求(好比大型3D遊戲),因而乎針對複雜圖形圖像處理的GPU就出現了;在這裏就不解釋GPU的工做原理了,你能夠google 一下!編程語言
目前計算單元主要分爲:通用計算單元(CPU),專用計算單元(GPU)性能
下面說說什麼是異構呢?
由一個(或者多個)通用計算單元(CPU)加上一個(或者多個)專用計算單元構建(GPU等)的系統就是異構計算系統,由二者協同起來共同執行通用計算任務就是異構計算,目前在開發中最多見的組合就是CPU+GPU。對於高要求場合這是明智之舉;
異構計算的目的通常是加速數據的處理能力,過去依靠工藝和頻率來提升CPU的計算性能,可是如今遇到了瓶頸,加速的任務已經由過去依賴工藝和功耗轉向依靠架構的改變。在過去GPU只能執行圖形任務,不能執行通用計算,因此還稱不上異構計算,如今的GPU已經具有了執行通用計算的能力,和CPU協同工做就組成了一個異構計算系統,AMD的APU就是其中的一個實現。
有了硬件的實現,一樣須要軟件的支持,目前比較流行的編程語言是C++AMP/OPENCL/CUDAgoogle
若是有理解不當之處,歡迎指正!spa