掃盲人工智慧的計算力基石 異構計算

2021-09-11 11:59:16 字數 3115 閱讀 1895

摘要:

本文將帶領入門讀者了解cpu,gpu,fpga,asic和異構計算的一些基本概念和優缺點,希望幫助入門者和愛好者建立基本的晶元概念

人工智慧有三要素:演算法,計算力,資料。我們今天主要來講講計算力。

計算力歸根結底由底層晶元提供。按照計算晶元的組成方式,可以分成:

同構計算:使用相同型別指令集和體系架構的計算單元組成系統的計算方式。

異構計算:使用不同型別指令集和體系架構的計算單元組成系統的計算方式。常見的計算單元類別包括cpu、gpu、asic、fpga等。

我們從cpu開始,講乙個小故事來幫助你理解一切。

有乙個大廚(cpu),能做各種菜(相容性好),但是某些大量重複的動作(例如切菜)明顯減慢了他做菜的速度。原來客人都點炒青菜,拌黃瓜之類的,大廚自己還算能勝任,但是最近(大資料時代到來),客人要求高了很多,開始點各種大菜(大量資料複雜處理)。

大廚力不從心,於是老闆需要找個幫手(協處理器)來幫助他,比如在切菜方面,這個幫手可以同時處理很多菜品(並行處理),而且速度很快(低延時)。希望在合理的分工協作下,廚房能滿足新的需求。

在之前餐廳的例子裡,大廚cpu能靈活控制整個做菜流程,更偏向乙個控制者,但很多場景下並不是最好的執行者。cpu作為通用處理器,也是更偏重支援控制流資料。cpu每個物理核中大部分的硬體資源被做成了控制電路和快取,用來提高指令相容性和效率。只有小部分是真正用來計算的邏輯運算單元(alu)。在這樣的架構下,cpu能相容大量指令,但是實際的計算效率並不高。

而且,cpu這個大廚很健忘,每做完一步都要去看看菜譜,甚至健忘到切菜每切一刀,都要去看看下一刀怎麼切。實際執行中,cpu的**都存在memory這個「菜譜」中,需要經過取指令,解碼,然後才能執行指令。在這個流程中,取指令,解碼會開銷額外的時間,降低了資料處理速度。

有人會說,為啥不再雇個大廚(雙核),這樣組成乙個同構廚房系統不好嗎?當然可以,因為之前的晶元結構貌似就是這樣迭代的。但是或許有以下缺陷無法避免:

大廚貴 -- **

大廚在某些方面其實不一定擅長,比如你切菜切得過料理機嗎?-- 效能

廚房就這麼大,再來個人可能沒空間 – 晶元面積

大廚吃的比較多,老闆想省點 – 功耗

最好能提供多樣的菜品加工能力,比如洗菜,切菜一體化。(演算法效能)。異構系統中,high performance compute要求全面實現加速演算法,而不是僅僅是幾個步驟。所以協處理器需要能全面支援需要用到的場景關鍵演算法。

支援同時、快速加工(資料並行處理能力,低延時處理能力)。協處理器需要有大量的資料並行通道,每個通道需要支援低延遲的資料管線處理。

便於操作和菜品訪問(介面效能)。要提供合適的介面頻寬,快速,安全地和主處理器進行資料互動。

安裝方便,能更新處理流程(配置靈活)。使用者能方便地安裝,配置,最好能更新協處理器的功能,方便日後計算需求的公升級迭代。

節能(功耗)。更低的功耗意味著更低的執行成本,更小的空間占用和更簡單的熱處理方案。

gpu和cpu都屬於通用處理器,但是卻有不同的架構。如果把cpu大廚形容為「頭腦發達(控制電路多),四肢簡單(計算電路少)」,那麼gpu幫廚正好相反。在gpu中,硬體資源被大量用作邏輯運算單元(alu),小部分用作控制電路。這為大規模的資料並行處理提供了基礎。其實,這個幫手在特定工作中遠遠超過了師傅(切菜洗菜超級快),大廚可以放心地把演算法簡單、重複性高、需要大量並行操作的工作交給它。

但是cpu支援的控制複雜度較低。當你要求笨笨的gpu把所有菜都切絲,它一定完成得又快又好,但是你告訴它:「土豆切絲,洋蔥切片,南瓜雕花……」它就沒有那麼高效了。這是因為,複雜的控制流程會產生大量的分支(如程式語言中的case和if else),而gpu中乙個控制單元要負責好幾個計算單元。所以,如果要最大程度地使用gpu,勢必要求控制分支越少越好。

另外,gpu有cpu大廚的共同毛病:健忘(需要從memory讀取指令),這帶來了一系列問題(如功耗大,基於指令系統,要解碼)。

如果給asic牌料理機制定一句廣告語,我覺得是:最快速度,最低能效,您廚房的最強幫手。

我們先來看看為什麼asic像「料理機」。因為它擺脫了指令系統,沒有了「健忘」問題,所有功能都固化了交付給客戶,更像一台廚房機器。asic的中文全稱是「特殊訂製積體電路」。它是訂製的,也意味著不需要去糾結cpu和gpu怎樣分配控制資源和計算資源的問題了,想怎麼分配就怎麼分配。

程式語言越接近底層硬體,執行速度越快。asic的設計是直接用軟體思維搭建硬體電路,所有的設計是直接建築在物理硬體(閘電路)上的。所以,asic不需要取指令和解碼,每個時間單位都能專注於資料處理或者傳輸,大大提高了效能。直接設計的硬體結構也讓資料處理管線真正實現,每一級的處理結果能直接用於下一級的輸入,無縫連線。在一定規則下(比如一定晶元面積和佈線規則下),並行通道可以最大化疊加。在功耗方面,因為硬體利用的最大化,是所有協處理器裡最小的。

那麼厲害的asic,看來我們的最佳方案一定是它了吧,問題來了:asic料理機**能買到呢?對不起,**都買不到,剛剛說了只能訂製。這個過程很漫長,帶來的風險自然很大。更重要的是,cpu大廚在拿到專屬料理機後,如果突然有一天想把功能更新一下,比如原來土豆切絲,現在想切土豆片了。很抱歉,只能再訂製一次。

fpga也是料理機,也沒有指令系統。和asic一樣:它的設計也是直接建築在物理硬體上。這樣的結構就已經注定了fpga在大量資料處理時的優勢。事實上,它幾乎具有asic的所有優點,速度功耗也遠遠優於通用處理器,但是和asic對比,還稍微差一點,例如:功耗大一點,速度慢一點,同樣晶元面積下能實現的功能弱一點。不過,fpga卻有乙個巨大優勢。

fpga,中文全稱「現場可程式設計門級列陣」。對比asic,有三個字無比耀眼:可程式設計。可程式設計意味著可改變。今天切土豆絲,明天切土豆片,都沒有問題了,不需要進行晶元重新訂製,靈活性堪比通用處理器。對比asic的研發流程,fpga開發可以快速試錯迭代,縮短了開發時間。其實,在半導體界,fpga有「萬能晶元」的美譽,它以可程式設計和靈活的直接基於硬體訂製兩**寶,在眾多應用場景中有著重要地位。

fpga的主要問題在開發。fpga料理機交付客戶時其實是乙個空機器,裡面什麼功能都沒有,需要客戶根據自己的需求一點點搭建。這個難度不低,主要原因是:異構演算法的開發人員大部分是軟體人員,缺乏對fpga結構和數位電路的了解,程式語言也不統一(cpu端是c、c++等等,fpga端是vhdl、verilog)。目前解決這個問題的方法是opencl和hls(high level synthesis)技術,支援直接把c、c++**編譯成verilog,雖然目前轉化效果仍然有待提高,但是隨著這些技術的成熟,相信fpga會站上異構計算的舞台**。

徐宗本 人工智慧的基石是數學

人工智慧的基石是數學,沒有數學基礎科學的支援,人工智慧很難行穩至遠。在中國科學院院士 西安交通大學教授徐宗本看來,目前人工智慧所面臨的一些基礎問題,其本質是來自數學的挑戰。近日,由聯合國教科文組織和中國工程院聯合主辦的以 大資料與知識服務 為主題的聯合國教科文組織國際工程科技知識中心2019國際高階...

人工智慧如何影響雲計算的發展

雲計算一直是乙個偉大的技術,正在改變組織的工作方式 儲存資訊,並改變決策,為技術創新和分析研究鋪平道路。想象一下雲計算為什麼變得這麼聰明?智慧型的雲計算不僅可以儲存和檢索大量的資料,還能夠收集 傳播和學習這些資訊,並隨時做出明智的決定。人工智慧如何影響雲計算?智慧型雲 在最基本的層次上,人工智慧已經...

人工智慧如何改變邊緣計算的未來

隨著物聯網裝置 例如手機,虛擬助手,膝上型電腦,平板電腦,建築物感測器,無人機,安全攝像機和可穿戴式健康感測器 的數量有望在2025年超過700億,邊緣計算應用也將增加。物聯網裝置在零售,醫療保健,工業,航空航天,國防,運輸,設施維護,能源,製造業,鏈物流和智慧型城市等廣泛領域中具有廣泛多樣的應用。...