CPU-GPU異構計算解決的問題與原因
先說結論:解決的是深度學習模型訓練在CPU上耗時長的問題拂共,提升深度學習模型的訓練效率。
原因(論據(jù)):
第一個條件:
深度學習(機器學習的一種)帶來了越來越多的商業(yè)價值最冰,例如:
廣告系統(tǒng):向特定人推薦更加符合其的需求的廣告,提升轉化率稀火。
計算機視覺:從視頻圖像中提取特定信息,在安防等領域實現(xiàn)自動化監(jiān)控凰狞。
還有最近微軟-openAI實驗室的CHATGPT應用等等。
故深度學習的廣泛商業(yè)價值導致了對深度學習模型的訓練需求越來越多赡若,
第二個條件:
對于深度學習模型的實現(xiàn)來說达布,深度學習涉及很多向量或多矩陣運算,此類運算的特點為邏輯簡單逾冬,運算量大黍聂,可并行,對于計算核數(shù)較少的CPU來說身腻,由于其巨大的運算量产还,導致訓練模型耗時較長,而GPU由于其眾多的核數(shù)(例如NVIDIA的A30計算卡CUDA核心數(shù)3584個)嘀趟,大大加快了此類模型訓練的效率脐区,降低時長。
而CPU適合做通用計算她按,例如復雜的邏輯處理(邏輯跳轉牛隅,TODO確定:專用的運算處理器等),將這兩個硬件結合起來酌泰,讓CPU負責通用的邏輯部分媒佣,讓GPU負責大規(guī)模的重復計算,從而提升整體的運行效率陵刹。
問:
1 為何CPU相較GPU不適合大批量簡單運算
答:因為CPU的ALU單元比GPU少丈攒,而真正執(zhí)行計算的為計算機的ALU單元。
什么是ALU單元:arithmetic and logic unit授霸。是能實現(xiàn)多組算術運算和邏輯運算的組合邏輯電路巡验。
2 既然GPU的ALU單元比CPU多,那為何GPU不能替代CPU
答:GPU的控制單元(Control Unit)與Cache對比CPU非常薄弱碘耳,導致GPU只適合執(zhí)行對特定組織的數(shù)據(jù)的特定的計算显设,而對所有組織類型的數(shù)據(jù),所有類型的計算辛辨,其效率會非常低捕捂,故GPU無法替代CPU。
進一步的解釋:不管CPU還是GPU斗搞,其工作都是輸入數(shù)據(jù)->計算->輸出數(shù)據(jù)的循環(huán)指攒,
GPU控制器比CPU少且簡單,并且GPU緩存比CPU少僻焚,如下圖所示:
由于GPU控制器比CPU少且簡單允悦,導致:
對于CPU而言,其可以處理完A數(shù)據(jù)虑啤,跳轉到B數(shù)據(jù)隙弛,繼續(xù)處理B數(shù)據(jù),這導致其可以應付所有數(shù)據(jù)處理邏輯狞山。
對于GPU而言全闷,由于控制器少,其必須要求一堆數(shù)據(jù)同時準備好萍启,然后扔到多個核里面統(tǒng)一處理总珠。
PLUS:由于控制器少,并且沒有分支預測功能勘纯,故其訪問內存延遲較高局服。
由于GPU緩存比CPU少,導致:
對于CPU而言屡律,由于其Cache較大,較豐富搏讶,疊加控制器的分支預測功能霍殴,導致其訪問內存較快。
對于GPU而言妒蔚,由于其Cache較小,且沒有分支預測功能科盛,且有嚴格的內存對齊要求菜皂,導致其訪問內存較慢。
得出結論:故如果用GPU替代CPU恍飘,那么多的分支跳轉邏輯,會讓GPU拿不到數(shù)據(jù)母蛛,空余算力乳怎,執(zhí)行程序較慢。
具體詳細的解釋焦辅,可以看這篇問答:為什么GPU不能替代CPU-知乎的回答?
名詞解釋:
控制單元(Control Unit):負責程序的流程管理椿胯。正如工廠的物流分配部門,控制單元是整個CPU的指揮控制中心前方,由指令寄存器IR(Instruction Register)廉油、指令譯碼器ID(Instruction Decoder)和操作控制器OC(Operation Controller)三個部件組成,對協(xié)調整個電腦有序工作極為重要(摘自-百度百科)抒线。
Cache:由于CPU計算非乘惶浚快,而內存讀取與寫入比較慢抑进,這導致內存的讀寫速度制約了CPU的運算速度(內存墻)睡陪,故在CPU的計算單元與內存之間匿情,增加了一層用于解決內存讀取速度慢的Cache炬称,就是這個鸡号。