程序員的野心:讓GPU像CPU一樣運(yùn)行
GPU代表的是圖形處理單元,但是,這些小小芯片除了處理圖形功能,還有其它用處。比如,Google使用GPU來為人腦建模,Salesforce則依賴GPU分析Twitter微博數(shù)據(jù)流。GPU很適合并行處理運(yùn)算,也就是同時(shí)執(zhí)行成千上萬個(gè)任務(wù)。怎么做呢?你得開發(fā)一個(gè)新軟件,讓它挖掘GPU芯片的潛力。最近美國印第安納大學(xué)計(jì)算機(jī)博士埃里克-浩克(Eric Holk)就作出嘗試,他開發(fā)了一個(gè)應(yīng)用程序來運(yùn)行GPU。浩克說:“GPU編程仍然需要程序員管理許多低層細(xì)節(jié),這些細(xì)節(jié)是與GPU執(zhí)行的主要任務(wù)分離 的。我們想開發(fā)一個(gè)系統(tǒng),幫助程序員管理這些細(xì)節(jié),讓GPU在提高生產(chǎn)力的同時(shí)仍然有很好的性能。”
本文引用地址:http://butianyuan.cn/article/147157.htm一般來說,電腦計(jì)算任務(wù)大多由CPU完成。一個(gè)CPU處理一個(gè)計(jì)算序列,也就是所謂的一次處理一個(gè)線程,它必須盡可能快地執(zhí)行。GPU的設(shè)計(jì)初衷是一次處理多個(gè)線程,這些線程處理速度慢很多,但程序可以利用并行優(yōu)勢執(zhí)行得更快一些,就像超級電腦一樣。
浩克稱,今天,CPU已經(jīng)能執(zhí)行并行運(yùn)算了,多核也很流行,但它們主要還是針對單線程優(yōu)化的。
GPU術(shù)語直到1999年才出現(xiàn),但在此之前已經(jīng)有早期的視頻處理芯片了,它們于1970-1980年推出。當(dāng)時(shí),視頻處理芯片嚴(yán)重依賴CPU進(jìn)行圖形處理,1990年代圖形顯卡更流行了,也更強(qiáng)大了,主要是因?yàn)?D顯卡出現(xiàn)。
喬治亞科技大學(xué)克里斯-麥克拉納罕(Chris McClanahan)認(rèn)為,GPU硬件架構(gòu)已經(jīng)進(jìn)化,以前它只是特定單一核心,現(xiàn)在向一組高并行、可編程核心轉(zhuǎn)變,它可以用來處理更通用的計(jì)算。毫無疑 問,隨著GPU技術(shù)的發(fā)展,它會增加更多可編程性、更多并行性,變得越來越像CPU,可以用于通用計(jì)算。麥克拉納罕說,CPU和GPU最終會融合。同時(shí), 開發(fā)者也開始挖掘GPU的能力,用于不同的應(yīng)用中,包括物理系統(tǒng)建模、強(qiáng)化智能手機(jī)等。
浩克解釋道:“GPU的內(nèi)存帶寬也比CPU高很多,在對海量數(shù)據(jù)進(jìn)行簡單計(jì)算時(shí),它的效率更好。”
已經(jīng)有一些GPU編程語言存在,包括CUDA和OpenCL。漢克開發(fā)了新語言Harlan,它可以控制GPU。實(shí)際上,Harlan被編譯成 OpenCL。但與其它語言不同,Harlan語言的抽象思維更多與高級編程語言相近,比如Python、Ruby。浩克稱:“Harlan的另一個(gè)目標(biāo) 是想回答一個(gè)問題:如果從一開始就開發(fā)一門語言,它最初的目標(biāo)就是支持GPU編程,那會怎樣呢?目前的大多系統(tǒng)將GPU編程嵌入到現(xiàn)有語言中,開發(fā)者不得 不處理舊語言的所有問題。Harlan可以讓開發(fā)者更好地為目標(biāo)硬件、程序作決策。”
Harlan語法基于Scheme,它是Lisp語言的現(xiàn)代變種,Scheme是所有好語言的始祖。為了讓編程語言更“正常”一些,浩克還用到 了Rust語言,這種語言主要面向開發(fā)系統(tǒng),它可以操作硬件底層。浩克的目的是讓程序員編寫的代碼更有效,因?yàn)镠arlan能生產(chǎn)更好的GPU代碼。
評論