中央處理器 (CPU) 是延遲優化的通用處理器,旨在按順序處理各種不同的任務,而圖形處理單元 (GPU) 是吞吐量優化的專用處理器,專為高端并行計算而設計。
GPU 與 CPU 基礎知識
中央處理器 | 顯卡 |
---|---|
任務并行度 | 數據并行 |
幾個重量級核心 | 許多輕量級內核 |
高內存大小 | 高內存吞吐量 |
許多不同的指令集 | 一些高度優化的指令集 |
顯式線程管理 | 線程由硬件管理 |
什么是中央處理器?
中央處理器 (CPU) 是計算機的大腦。CPU 的主要工作是通過獲取-解碼-執行循環執行各種指令集,以管理計算機的各個部分并運行各種計算機程序。
中央處理器架構
CPU 按順序處理數據的速度非???,因為它幾乎沒有具有高時鐘速度的重量級內核。它就像一把瑞士軍刀,可以很好地處理各種任務。CPU 是延遲優化的,可以在多個任務之間快速切換,這可能會產生并行性的印象。然而,從根本上說,它被設計為一次運行一項任務。
什么是 GPU?
圖形處理單元 (GPU) 是一種專用處理器,其工作是快速操縱內存并加速計算機執行許多需要高度并行性的特定任務。
圖形處理器架構
由于 GPU 使用數以千計的輕量級內核,其指令集針對維矩陣運算和浮點計算進行了優化,因此它在線性代數和需要高度并行性的類似任務中速度極快。根據經驗,如果您的算法接受矢量化數據,則該作業可能非常適合GPU 計算。在架構上,GPU 的內部存儲器具有帶點對點連接的寬接口,可加快內存吞吐量并增加 GPU 在給定時刻可以處理的數據量。它旨在同時快速處理大量數據。
GPU 與 CPU 限制
CPU 和 GPU 限制的主題歸結為確切的用例場景。在某些情況下,CPU 就足夠了,而其他應用程序可能受益于 GPU 加速器。現在讓我們揭開 CPU 和 GPU 處理器的一些一般弱點,以幫助您決定是否同時需要它們。
CPU 限制
重量級指令集
將越來越復雜的指令直接嵌入 CPU 硬件的趨勢是一種現代趨勢,但也有其缺點。為了執行一些更困難的指令,CPU 有時需要旋轉數百個時鐘周期。盡管英特爾使用具有指令級并行性的指令流水線來緩解這種限制,但它正在成為整體 CPU 性能的開銷。
上下文切換延遲
上下文切換延遲是 CPU 核心在線程之間切換所需的時間。任務之間的切換非常慢,因為您的 CPU 必須存儲寄存器和狀態變量、刷新緩存內存以及執行其他類型的清理活動。盡管現代 CPU 處理器試圖通過降低多任務延遲的任務狀態段來解決這個問題,但上下文切換仍然是一個昂貴的過程。
摩爾定律
集成電路上每平方英寸的晶體管數量每兩年翻一番的觀點可能即將結束。一塊硅片上可以安裝多少個晶體管是有限制的,而且你無法超越物理學。
相反,工程師們一直在嘗試借助分布式計算來提高計算效率,并嘗試使用量子計算機進行試驗,甚至試圖尋找用于 CPU 制造的硅替代品。
圖形處理器限制
不那么強大的內核
盡管 GPU 有更多的核心,但它們在時鐘速度方面不如 CPU 強大。GPU 核心的指令集也不那么多樣化,但更加專業化。這不一定是壞事,因為 GPU 對于一小組特定任務非常高效。
更少的內存
GPU 還受到它們可以擁有的最大內存量的限制。雖然 GPU 處理器可以在給定時刻移動比 CPU 更大量的信息,但 GPU 內存訪問具有更高的延遲。
有限的 API
最流行的 GPU API 是 OpenCL 和 CUDA。不幸的是,它們都以難以調試而聞名。盡管 OpenCL 是開源的,但它在 Nvidia 硬件上的運行速度相當慢。另一方面,CUDA 是專有的 Nvidia API,針對 Nvidia GPU 進行了優化,但它也會自動將您鎖定在他們的硬件生態系統中。
您需要 GPU 加速器嗎?
您的系統中始終存在瓶頸。您是否需要 GPU 加速器的問題始終與您要解決的問題的具體情況有關。CPU 和 GPU 都有不同的優勢領域,了解它們的局限性將使您在為項目選擇最佳硬件時做得更好。