{eval=Array;=+count(Array);}
原文:
并行計(jì)算有什么好的?
硬件的性能無(wú)法永遠(yuǎn)提升,當(dāng)前的趨勢(shì)實(shí)際上趨于降低功耗。那么推廣并行技術(shù)這個(gè)靈丹妙藥又有什么好處呢?我們已經(jīng)知道適當(dāng)?shù)膩y序CPU是必要的,因?yàn)槿藗冃枰侠淼男阅埽⑶襾y序執(zhí)行已被證明比順序執(zhí)行效率更高。
推崇所謂的“并行”極大地浪費(fèi)了大家的時(shí)間?!安⑿懈咝А钡母叽笊侠砟罴兇馐浅兜?。大容量緩存可以提高效率。在一些沒有附帶緩存的微內(nèi)核上搞并行毫無(wú)意義,除非是針對(duì)大量的規(guī)則運(yùn)算(比如圖形處理)。
沒人會(huì)回到從前了。那些復(fù)雜的亂序運(yùn)行內(nèi)核不會(huì)消失。擴(kuò)展不會(huì)一直進(jìn)行下去,人們需要的是移動(dòng)性,因此那些主張擴(kuò)展至上百內(nèi)核的都是瘋子,不要鳥他們。
他們究竟是如何幻想那些神奇的并行算法會(huì)有用武之地的呢?
并行只有對(duì)圖形計(jì)算和服務(wù)器有意義,而在這些領(lǐng)域我們已經(jīng)大量應(yīng)用并行了。把并行推廣到其他的領(lǐng)域沒有意義。
所以說(shuō)忘記并行吧。它不會(huì)到來(lái)的。4個(gè)左右的內(nèi)核對(duì)終端用戶來(lái)說(shuō)沒有問題,在移動(dòng)領(lǐng)域里,不大幅增加能耗的情況下,你沒辦法再塞進(jìn)更多的核。任何一個(gè)理智的人都不會(huì)為了要塞入更多的內(nèi)核而閹割內(nèi)核以降低其大小和性能,閹割內(nèi)核的唯一理由是你想進(jìn)一步降低功耗,因此你還是不會(huì)得到大量的核。
所以爭(zhēng)論是否要講究程序的并行性根本就是謬誤,其前提條件都是錯(cuò)誤的。它只不過是一個(gè)早該過時(shí)的時(shí)髦術(shù)語(yǔ)罷了。
并行程序在上面提到的一些地方是有用的,并且已經(jīng)大量地運(yùn)用了,比如在服務(wù)器領(lǐng)域,人們已經(jīng)并行很多年了。
在其他的領(lǐng)域,并行不是一定必須的,即便是在將來(lái)的一些未知領(lǐng)域也是如此,因?yàn)槟阕霾坏健<偃缒阋龅凸耐ㄓ糜?jì)算機(jī)視覺,我基本可以保證你不會(huì)使用通用圖形處理器(GP CPU)。你甚至不會(huì)用圖形處理器,因?yàn)槠涔囊蔡吡恕D愦蟾艜?huì)用特殊的硬件,很可能是基于某些神經(jīng)網(wǎng)絡(luò)的硬件。
放棄吧。“并行就是未來(lái)”的說(shuō)法就是一片浮云。
這又是一個(gè)老帖子了, 是Linus在14年底回復(fù)關(guān)于"并行"優(yōu)化的時(shí)寫的.原文別的答案已附,英文原文可自行百度。
6年后的今天, 現(xiàn)實(shí)發(fā)展再一次證明Linus此結(jié)論的無(wú)比正確. 需要注意, 原上下文是在討論kernel(內(nèi)核)編程, 因此只在講單機(jī)CPU的"并行", 不是指多機(jī)"并行".
LInus原貼重要觀點(diǎn)是:
1. CPU是通用復(fù)雜計(jì)算, 發(fā)展方向是"低功耗". 依賴強(qiáng)核(complex core)和大緩存.
Linux是通用OS, 面向通用架構(gòu)CPU編程. kernel是Linux系統(tǒng)的核心, 要盡量滿足通用CPU計(jì)算. 因此Linus只接受通用開發(fā)方向的改進(jìn)是符合其定位的. 對(duì)于"低功耗"的發(fā)展預(yù)測(cè)也是非常精準(zhǔn), 全球基于ARM和兩巨頭的移動(dòng)CPU出貨量早就超過了桌面/服務(wù)器級(jí)出貨量. 從目前CPU的主要設(shè)計(jì)構(gòu)造看, 高端CPU越來(lái)越強(qiáng)化復(fù)雜指令和單核處理能力, 同時(shí)增大緩存. 從目前英特爾i7系列看, 仍然在上面堆指令, 高速緩存達(dá)到16M, 是符合預(yù)測(cè)的.
2. 并行計(jì)算不通用, 依賴小核(weak cores)和很多核. 甚至在未來(lái)同樣會(huì)遇到功耗問題.
從GPU發(fā)展看, 現(xiàn)在小核數(shù)和功耗年年提升, 一個(gè)主流GPU GTX 1660功耗450W以上, 遠(yuǎn)高于與其常搭配CPU i5的65W功耗. 同時(shí)近年的深度學(xué)習(xí)在GPU而不是CPU的應(yīng)用也驗(yàn)證了并行計(jì)算的不通用性和能耗過高問題.
3. 各種鄙視吐槽話.
是全文精華, 建議對(duì)照原文學(xué)習(xí).
并行計(jì)算早已被證明是可行的計(jì)算架構(gòu),否則全球幾百臺(tái)超級(jí)計(jì)算機(jī)是拿來(lái)當(dāng)玩具玩兒的嗎?
采用Hadoop/MapReduce計(jì)算架構(gòu)的大型互聯(lián)網(wǎng)應(yīng)用在全球都得到了廣泛應(yīng)用。沒有并行計(jì)算,淘寶在雙十一能處理那么多的并發(fā)訂單嗎?
不理解Linus這句話的意思。
這就是LINUS不懂了,不懂并行計(jì)算的威力,那是因?yàn)樗麤]有做深度學(xué)習(xí)。深度學(xué)習(xí)訓(xùn)練計(jì)算量很大,就是人們說(shuō)的算力,需要大量計(jì)算,比如做imagenet競(jìng)賽,百萬(wàn)級(jí)圖片,一旦訓(xùn)練起來(lái)就沒完沒了,用cpu訓(xùn)練估計(jì)要幾個(gè)月,如果用gpu并行計(jì)算,用幾天就好了。gpu做深度學(xué)習(xí)訓(xùn)練速度是cpu的十倍以上,平時(shí)要半天訓(xùn)練現(xiàn)在一個(gè)小時(shí)就好了。而目前最大的bert模型,沒有大量gpu還訓(xùn)練不了。所以linus說(shuō)的浪費(fèi)時(shí)間可能是在操作系統(tǒng)運(yùn)行上肯定最快的cpu就夠了,但是深度學(xué)習(xí)是不行的。
因?yàn)槿藢?shí)際上是單線程處理多事物的。舉個(gè)例子,開車超車,目標(biāo)車道前后有2輛車,你要插到當(dāng)中,插之前你看的是2扯間距夠不夠,打方向盤的時(shí)候看后視鏡確認(rèn)候車沒有加速前沖不讓你超,車身一半進(jìn)線時(shí),你看前方防止前車剎車。每一個(gè)時(shí)候其實(shí)只是干一件事,其他事只是放著慣性思維覺得該是慣性運(yùn)動(dòng)。
0
回答0
回答0
回答1
回答0
回答0
回答0
回答0
回答0
回答0
回答