大數(shù)據(jù)時(shí)代的到來以及由此帶來的處理需求,使得并行編程迫切需要向平民化發(fā)展。
我們正從互聯(lián)網(wǎng)時(shí)代向物聯(lián)網(wǎng)時(shí)代演進(jìn),其重要特點(diǎn)之一是大數(shù)據(jù)的出現(xiàn)。因此,我們需要獲得更強(qiáng)的計(jì)算能力,以更快捷地處理各種計(jì)算設(shè)備產(chǎn)生的海量數(shù)據(jù),從中提取出商業(yè)價(jià)值。
在這樣的大背景下,并行化、分布式已成為提升計(jì)算力的重要解決方式。談大數(shù)據(jù)往往圍繞分布式計(jì)算,這里我們講一講另一個(gè)支撐技術(shù)并行化。要實(shí)現(xiàn)并行化從來就不是一件容易的事。在研究的過程中,我們碰到了兩堵障礙墻,一是硬件的并行性永遠(yuǎn)跟不上客觀世界應(yīng)用對(duì)計(jì)算力的需求;二是并行軟件的發(fā)展永遠(yuǎn)趕不上硬件并行化的發(fā)展。而隨著時(shí)間的推移,應(yīng)用、硬件和軟件技術(shù)發(fā)展的不均衡性也日益凸顯,“撞墻”效應(yīng)愈演愈烈。
針對(duì)這樣的挑戰(zhàn),我們著重在眾核體系結(jié)構(gòu)和并行編程研究?jī)煞矫鎸で笸黄疲罢叩哪繕?biāo)是使硬件并行性的發(fā)展跟上現(xiàn)實(shí)世界并行性需求的發(fā)展,而后者的任務(wù)是讓普通程序員編寫的軟件能充分利用硬件的并行性。今天我主要想和大家分享英特爾在并行編程這一方面的探索經(jīng)驗(yàn)。
業(yè)界幾十年來對(duì)并行編程的探索,讓廣大程序員普遍認(rèn)識(shí)到?jīng)]有一種技術(shù)能夠“一招鮮走遍天下”,從而一勞永逸地解決問題。但大數(shù)據(jù)時(shí)代的到來以及由此帶來的處理需求,使得并行編程迫切需要向平民化發(fā)展。為此,英特爾研究院提出了四個(gè)思路:一、開發(fā)多層次的、針對(duì)不同水平程序員的多樣化并行編程技術(shù);二、提供從語言到工具的全套解決方案,涵蓋從開發(fā)到調(diào)試,再到調(diào)優(yōu)的各個(gè)階段;三、允許不同層次、種類編程技術(shù)之間的可組合性;四、強(qiáng)調(diào)平臺(tái)伸縮性,實(shí)現(xiàn)編寫一次,即可在現(xiàn)在與未來、多核與眾核、同構(gòu)與異構(gòu)的不同平臺(tái)上運(yùn)行。
簡(jiǎn)單來說,這四個(gè)思路旨在讓程序員在使用英特爾的編程技術(shù)時(shí)找到親近感,讓并行編程變得更加便捷。我們發(fā)現(xiàn),程序員能否很好地進(jìn)行并行編程,與他們自身的認(rèn)知、習(xí)慣及受到的培訓(xùn)有很大的關(guān)系。很多程序員在學(xué)習(xí)編程時(shí)都是從串行編程開始的,他們無法快速地轉(zhuǎn)換到并行編程上。這些思路可以保證程序員在使用我們的技術(shù)時(shí),會(huì)發(fā)現(xiàn)多多少少跟他們?cè)瓉硭鶎W(xué)的相似,從而能讓他們擁有自己的選擇權(quán)。
為此,在具體的技術(shù)實(shí)現(xiàn)策略上,大致分三種:一、串行變并行,即程序員原來寫的串行程序不用大改,由我們的編譯器、自動(dòng)工具和并行硬件把程序改為并行。二、給串行加上并行,即讓程序員考慮能不能在原有的串行語言上面加入一些并行的擴(kuò)展。這樣就可以保證已經(jīng)編好的大部分程序不用修改,只要將一小部分變成并行就行。三、完全并行。這也是業(yè)界的全新研究方向,讓程序員考慮徹底地使用新的并行范型和語言。
當(dāng)然,在現(xiàn)實(shí)編程的過程中會(huì)發(fā)現(xiàn)更加復(fù)雜的問題。比如有些使用得很好的串行算法很難進(jìn)行并行化處理。針對(duì)不同的情況,英特爾研究院和軟件部門推薦了不同的解決方案。例如數(shù)據(jù)并行非常好的,我們就用ArBB(Array Buildlng Blocks)技術(shù)來做;如果是任務(wù)并行比較好的,我們會(huì)用TBB(Threading Building Blocks)技術(shù);描述任務(wù)之間復(fù)雜邏輯的可以用CnC(Concurrent Collections);如果有些算法真的是很難優(yōu)化的,我們就直接提供庫(kù),程序員只需要調(diào)用就可以了。當(dāng)時(shí)我和同事一起設(shè)計(jì)ArBB時(shí),就是為了解決核多、SSE/AVX編程難的問題,為程序員提供一條更加便捷的并行途徑。
今天,一個(gè)月內(nèi)上傳到Y(jié)ouTube的視頻比美國(guó)三大電視網(wǎng)60年內(nèi)制作的視頻還要多。未來,當(dāng)我們真正進(jìn)人大數(shù)據(jù)時(shí)代后產(chǎn)生的數(shù)據(jù)量將大大超出人們的想象力。面對(duì)未知的挑戰(zhàn),我們要保持樂觀心態(tài),一起努力實(shí)現(xiàn)高效并行化,共同推動(dòng)互聯(lián)網(wǎng)向大數(shù)據(jù)和物聯(lián)網(wǎng)的快速、健康演進(jìn)。