前言
CPU 的並行程式設計技術,也是高效能運算中的熱點,也是今後要努力學習的方向。那麼它和 GPU 並行程式設計有何區別呢?
本文將做出詳細的對比,分析各自的特點,為將來深入學習 CPU 並行程式設計技術打下鋪墊。
區別一:快取管理方式的不同
GPU:快取對程式設計師不透明,程式設計師可根據實際情況操縱大部分快取 (也有一部分快取是由硬體自行管理)。
CPU:快取對程式設計師透明。應用程式設計師無法通過程式設計手段操縱快取。
區別二:指令模型的不同
GPU:採用 SIMT - 單指令多執行緒模型,一條指令配備一組硬體,對應32個執行緒 (一個執行緒束)。
CPU:採用 MIMD - 多指令多資料型別。多條指令構成指令流水線,且每個執行緒都有獨立的硬體來操縱整個指令流。
用通俗易懂的話來說,GPU 採用頻繁的執行緒切換來隱藏儲存延遲,而 CPU 採用複雜的分支預測技術來達到此目的。
區別三:硬體結構的不同
GPU 內部有很多流多處理器。每個流多處理器都相當於一個“核",而且一個流多處理器每次處理 32 個執行緒。
故 GPU 的資料吞吐量非常大,傾向於進行資料併發型優化;而 CPU 則傾向於任務併發型優化。