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