2018-03-05 11:28
cpu和gpu都屬於馮·諾依曼結構,指令解碼執行,共享記憶體。fpga之所以比cpu、gpu更快,本質上是因為其無指令,無共享記憶體的體系結構所決定的。
馮氏結構中,由於執行單元可能執行任意指令,就需要有指令儲存器、解碼器、各種指令的運算器、分支跳轉處理邏輯。而fpga的每個邏輯單元的功能在重程式設計時就已經確定,不需要指令。
馮氏結構中使用記憶體有兩種作用:①儲存狀態。②執行單元間的通訊。
1)儲存狀態:fpga中的暫存器和片上記憶體(bram)是屬於各自的控制邏輯的,無需不必要的仲裁和快取。
2)通訊需求:fpga每個邏輯單元與周圍邏輯單元的連線在重程式設計時就已經確定了,並不需要通過共享記憶體來通訊。
計算密集型任務中:
在資料中心,fpga相比gpu的核心優勢在於延遲。fpga為什麼比gpu的延遲低很多?本質上是體系結構的區別。fpga同時擁有流水線並行和資料並行,而gpu幾乎只有資料並行(流水線深度受限)。
處理乙個資料報有10個步驟,fpga可以搭建乙個10級流水線,流水線的不同級在處理不同的資料報,每個資料報流經10級之後處理完成。每個處理完成的資料報可以馬上輸出。而gpu的資料並行方法是做10個計算單元,每個計算單元也在處理不同的資料報,但是所有的計算單元必須按照統一的步調,做相同的事情(simd)。這就要求10個資料報必須同進同出。當任務是逐個而非成批到達的時候,流水線並行比資料並行可實現更低的延遲。因此對流水式計算的任務,fpga比gpu天生有延遲方面的優勢。
asic在吞吐量、延遲、功耗單個方面都是最優秀的。但是其研發成本高,周期長。fpga的靈活性可以保護資產。資料中心是租給不同租戶使用的。有的機器上有神經網路加速卡,有的有bing搜尋加速卡,有的有網路虛擬加速卡,任務的排程和運維會很麻煩。使用fpga可以保持資料中心的同構性。
通訊密集型任務中,fpga相比gpu、cpu的優勢更大。
①吞吐量:fpga可以直接接上40gbps或者100gbps的網線,以線速處理任意大小的資料報;而cpu則需要網絡卡把資料報接收過來;gpu也可以高效能處理資料報,但gpu沒有網口,同樣需要網絡卡,這樣吞吐量受到網絡卡和(或)者cpu的限制。
②延遲:網絡卡把資料傳給cpu,cpu處理後傳給網絡卡,再加上系統中的時鐘中斷和任務排程增加了延遲的不穩定性。
綜上所述,在資料中心裡 fpga 的主要優勢是穩定又極低的延遲,適用於流式的計算密集型任務和通訊密集型任務。
fpga 和 gpu 最大的區別在於體系結構,fpga 更適合做需要低延遲的流式處理,gpu 更適合做大批量同構資料的處理。
成也蕭何,敗也蕭何。缺少指令同時是 fpga 的優勢和軟肋。每做一點不同的事情,就要占用一定的 fpga 邏輯資源。如果要做的事情複雜、重複性不強,就會占用大量的邏輯資源,其中的大部分處於閒置狀態。這時就不如用馮·諾依曼結構的處理器。
fpga 和 cpu 協同工作,區域性性和重複性強的歸 fpga,複雜的歸 cpu。
(深度學習)為什麼GPU比CPU慢?
gpu由於擅長矩陣運算,在深度學習尤其是計算機視覺方面得到了廣泛的應用。前幾天在我廢了好大勁在我的的電腦上安裝了tensorflow 2.0 gpu,然後就迫不及待地去體驗一下gpu的速度。我去tensorflow官網上直接複製了一段 就是最簡單的神經網路識別mnist手寫數字資料集。然後分別用gp...
CPU 和 GPU頻率設定
在嵌入式裝置中為了降低功耗防止晶元發熱,廠商一般預設都將cpu和gpu頻率為最小,為了提高效能,減少演算法耗時需要手動將cpu或者gpu頻率設到效能模式。echo performance sys devices system cpu cpu0 cpufreq scaling governor,一般c...
CPU和GPU的區別
cpu 即 處理器,解釋計算機指令以及處理計算機軟體中的資料 gpu即圖形處理器,專門處理和繪製圖形相關的硬體。gpu時專為執行複雜的數學和 集合計算而設計的,有了它,cpu就從圖形處理的任務中解放出來,可以執行其他更多的 系統任務。硬體加速 在計算機中把計算量非常大的工作非陪給專門的硬體處理,減輕...