第一篇:GPU 编程技术的发展历程及现状
前言
本文通過(guò)介紹 GPU 編程技術(shù)的發(fā)展歷程,讓大家初步地了解 GPU 編程,走進(jìn) GPU 編程的世界。
馮諾依曼計(jì)算機(jī)架構(gòu)的瓶頸
曾經(jīng),幾乎所有的處理器都是以馮諾依曼計(jì)算機(jī)架構(gòu)為基礎(chǔ)的。該系統(tǒng)架構(gòu)簡(jiǎn)單來(lái)說(shuō)就是處理器從存儲(chǔ)器中不斷取指,解碼,執(zhí)行。
但如今這種系統(tǒng)架構(gòu)遇到了瓶頸:內(nèi)存的讀寫(xiě)速度跟不上 CPU 時(shí)鐘頻率。具有此特征的系統(tǒng)被稱(chēng)為內(nèi)存受限型系統(tǒng),目前的絕大多數(shù)計(jì)算機(jī)系統(tǒng)都屬于此類(lèi)型。
為了解決此問(wèn)題,傳統(tǒng)解決方案是使用緩存技術(shù)。通過(guò)給 CPU 設(shè)立多級(jí)緩存,能大大地降低存儲(chǔ)系統(tǒng)的壓力:
然而隨著緩存容量的增大,使用更大緩存所帶來(lái)的收益增速會(huì)迅速下降,這也就意味著我們要尋找新的辦法了。
對(duì) GPU 編程技術(shù)發(fā)展具有啟發(fā)意義的幾件事
1. 70年代末期,克雷系列超級(jí)計(jì)算機(jī)研制成功 (克雷1當(dāng)年耗資800萬(wàn)美元)。
此類(lèi)計(jì)算機(jī)采用若干內(nèi)存條的共享內(nèi)存結(jié)構(gòu),即這些內(nèi)存條可以與多個(gè)處理器相連接,從而發(fā)展成今天的對(duì)稱(chēng)多處理器系統(tǒng) (SMD)。
克雷2是向量機(jī) - 一個(gè)操作處理多個(gè)操作數(shù)。
如今的 GPU 設(shè)備的核心也正是向量處理器。
2. 80年代初期,一家公司設(shè)計(jì)并研制了一種被稱(chēng)為連接機(jī)的計(jì)算機(jī)系統(tǒng)。
該系統(tǒng)具有16個(gè) CPU 核,采用的是標(biāo)準(zhǔn)的單指令多數(shù)據(jù) (SIMD) 并行處理。連接機(jī)通過(guò)這種設(shè)計(jì)能夠消除多余的訪存操作,并將內(nèi)存讀寫(xiě)周期變?yōu)樵瓉?lái)的 1/16 。
3. CELL 處理器的發(fā)明
這類(lèi)處理器很有意思,其架構(gòu)大致如下圖所示:
在此結(jié)構(gòu)中,一個(gè) PPC 處理器作為監(jiān)管處理器,與大量的 SPE流處理器相連通,組成了一個(gè)工作流水線。
對(duì)于一個(gè)圖形處理過(guò)程來(lái)說(shuō),某個(gè) SPE 可負(fù)責(zé)提取數(shù)據(jù),另一個(gè) SPE 負(fù)責(zé)變換,再另一個(gè)負(fù)責(zé)存回。這樣可構(gòu)成一道完完整整的流水線,大大提高了處理速度。
順便提一句,2010年超級(jí)計(jì)算機(jī)排名第三的計(jì)算機(jī)就是基于這種設(shè)計(jì)理念實(shí)現(xiàn)的,占地面積達(dá)560平方米,耗資 1.25 億美元。
多點(diǎn)計(jì)算模型
集群計(jì)算是指通過(guò)將多個(gè)性能一般的計(jì)算機(jī)組成一個(gè)運(yùn)算網(wǎng)絡(luò),達(dá)到高性能計(jì)算的目的。這是一種典型的多點(diǎn)計(jì)算模型。
而 GPU 的本質(zhì),也同樣是多點(diǎn)計(jì)算模型。其相對(duì)于當(dāng)今比較火的Hadoop/Spark集群來(lái)說(shuō):“點(diǎn)”由單個(gè)計(jì)算機(jī)變成了 單個(gè)SM (流處理器簇),通過(guò)網(wǎng)絡(luò)互連變成了通過(guò)顯存互連 (多點(diǎn)計(jì)算模型中點(diǎn)之間的通信永遠(yuǎn)是要考慮的重要問(wèn)題)。
GPU 解決方案
隨著 CPU "功耗墻" 問(wèn)題的產(chǎn)生,GPU 解決方案開(kāi)始正式走上舞臺(tái)。
GPU 特別適合用于并行計(jì)算浮點(diǎn)類(lèi)型的情況,下圖展示了這種情況下 GPU 和 CPU 計(jì)算能力的差別:
但這可不能說(shuō)明 GPU 比 CPU 更好,CPU應(yīng)當(dāng)被淘汰。 上圖的測(cè)試是在計(jì)算可完全并行的情況下進(jìn)行的。
對(duì)于邏輯更靈活復(fù)雜的串行程序,GPU 執(zhí)行起來(lái)則遠(yuǎn)不如 CPU 高效 (沒(méi)有分支預(yù)測(cè)等高級(jí)機(jī)制)。
另外,GPU 的應(yīng)用早已不局限于圖像處理。事實(shí)上 CUDA 目前的高端板卡 Tesla 系列就是專(zhuān)門(mén)用來(lái)進(jìn)行科學(xué)計(jì)算的,它們連 VGA 接口都沒(méi)。
幾款新的顯卡及其配置 (僅列 N 卡)
注:
1. 各參數(shù)的具體含義將在以后的文章中做細(xì)致分析
2. 當(dāng)前顯卡的具體參數(shù)信息可通過(guò)調(diào)試工具獲取到 (方法略)
主流 GPU 編程接口
1. CUDA
是英偉達(dá)公司推出的,專(zhuān)門(mén)針對(duì) N 卡進(jìn)行 GPU 編程的接口。文檔資料很齊全,幾乎適用于所有 N 卡。
本專(zhuān)欄講述的 GPU 編程技術(shù)均基于此接口。
2. Open CL
開(kāi)源的 GPU 編程接口,使用范圍最廣,幾乎適用于所有的顯卡。
但相對(duì) CUDA,其掌握較難一些,建議先學(xué) CUDA,在此基礎(chǔ)上進(jìn)行 Open CL 的學(xué)習(xí)則會(huì)非常簡(jiǎn)單輕松。
3. DirectCompute
微軟開(kāi)發(fā)出來(lái)的 GPU 編程接口。功能很強(qiáng)大,學(xué)習(xí)起來(lái)也最為簡(jiǎn)單,但只能用于 Windows 系統(tǒng),在許多高端服務(wù)器都是 UNIX 系統(tǒng)無(wú)法使用。
總結(jié),這幾種接口各有優(yōu)劣,需要根據(jù)實(shí)際情況選用。但它們使用起來(lái)方法非常相近,掌握了其中一種再學(xué)習(xí)其他兩種會(huì)很容易。
學(xué)習(xí) GPU 編程的意義
1. 不單能學(xué)會(huì)如何使用 GPU 解決問(wèn)題,更讓我們更加深入地了解并行編程思想,為以后全面地掌握各種并行技術(shù)打下鋪墊。
2. 并行計(jì)算相關(guān)知識(shí)的研究與發(fā)展勢(shì)必會(huì)成為未來(lái)IT業(yè)界與學(xué)界的一大熱點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的第一篇:GPU 编程技术的发展历程及现状的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不再让充电器和移动电源成为累赘,这份指南
- 下一篇: 区块链:以太坊基础之第一个智能合约