第五篇:淺談CPU 並行程式設計和 GPU 並行程式設計的區別

穆晨發表於2017-01-18

前言

  CPU 的並行程式設計技術,也是高效能運算中的熱點,也是今後要努力學習的方向。那麼它和 GPU 並行程式設計有何區別呢?

  本文將做出詳細的對比,分析各自的特點,為將來深入學習 CPU 並行程式設計技術打下鋪墊。

區別一:快取管理方式的不同

  GPU:快取對程式設計師不透明,程式設計師可根據實際情況操縱大部分快取 (也有一部分快取是由硬體自行管理)。

  CPU:快取對程式設計師透明。應用程式設計師無法通過程式設計手段操縱快取。

區別二:指令模型的不同

  GPU:採用 SIMT - 單指令多執行緒模型,一條指令配備一組硬體,對應32個執行緒 (一個執行緒束)。

  CPU:採用 MIMD - 多指令多資料型別。多條指令構成指令流水線,且每個執行緒都有獨立的硬體來操縱整個指令流。

  用通俗易懂的話來說,GPU 採用頻繁的執行緒切換來隱藏儲存延遲,而 CPU 採用複雜的分支預測技術來達到此目的。

區別三:硬體結構的不同

  GPU 內部有很多流多處理器。每個流多處理器都相當於一個“核",而且一個流多處理器每次處理 32 個執行緒。

  故 GPU 的資料吞吐量非常大,傾向於進行資料併發型優化;而 CPU 則傾向於任務併發型優化。

相關文章