適合GPU運算的運算類型有以下六種:
1、大量的輕量級運算
即用大量數據或者用同一數據多次調用同一公式或者計算過程,公式本身並不複雜,只是執行的次數較多,這是GPU先天的優勢。
2、高度並行
高度並行指的就是各個數據之間運算互不影響,即耦合度較低。由於GPU本身硬件基礎決定,各個workgroup之間並不相互通信,只有同一workgroup內的work-item之間才相互通信,所以GPU本身並不支援迭代等數據耦合度較高的計算,這是GPU本身要求。
3、計算密集型
任務可以分爲計算密集型和IO密集型。計算密集型,即少量的IO讀取+大量的計算,消耗CPU資源較多;而IO密集型,是指多次使用IO讀取+少量計算,這種情況涉及到寄存器與內存之間以及與設備內存之間的通信問題,主要限制原因是顯存帶寬問題。
4、控制簡單
對比GPU來說,CPU更擅長判斷、邏輯控制、分支等,有通用計算能力,並含有強大的ALU(算術運算單元);而GPU更適合於邏輯簡單的運算。
5、多個階段執行
運算程序可分解爲多個小程序或者同一程序可分多個階段執行,這就類似於使用集羣處理同一任務,將其分解爲多個任務碎片分發到各節點執行,以提高運算速率。
6、浮點型運算
GPU擅長浮點型運算。