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