“OpenCL到底是什么?”。在執(zhí)筆《日經(jīng)電子》2008年12月15日號刊登的報(bào)道“蘋果主導(dǎo)下的‘OpenCL’,為處理器帶來自由”期間,同事及上司多次這樣詢問筆者。雖然筆者自以為隨著對OpenCL采訪的不斷深入,已理解了其內(nèi)含及意義,但卻難以滿意地回答這種問題。萬般無奈之下,筆者在報(bào)道中這樣寫道,“簡而言之,OpenCL是在異構(gòu)(Heterogeneous)多處理器平臺上將硬件差異抽象化的技術(shù)”。對各位讀者
“OpenCL到底是什么?”。在執(zhí)筆《日經(jīng)
電子》2008年
12月
15日號刊登的報(bào)道“蘋果主導(dǎo)下的‘OpenCL’,為處理器帶來自由”期間,同事及上司多次這樣詢問筆者。雖然筆者自以為隨著對OpenCL采訪的不斷深入,已理解了其內(nèi)含及意義,但卻難以滿意地回答這種問題。
萬般無奈之下,筆者在報(bào)道中這樣寫道,“簡而言之,OpenCL是在異構(gòu)(Heterogeneous)多處理器平臺上將硬件差異抽象化的技術(shù)”。對各位讀者來說,也許這種表達(dá)方式很難理解。慚愧的是,目前還沒辦法用一句話回答“OpenCL到底是什么?”。筆者在與致力于推進(jìn)OpenCL標(biāo)準(zhǔn)化的Khronos Group的總裁Neil Trevett見面談及此事,他苦笑道:“業(yè)界人士能馬上理解OpenCL的概況及其必要性。但是,要簡潔地傳達(dá)給業(yè)界以外的人卻很難。我們也為此而頭痛”。
為什么需要OpenCL?
既然OpenCL難以簡單進(jìn)行描述,為什么筆者還要予以關(guān)注,筆者想借此機(jī)會略作介紹。
假設(shè)在數(shù)字化民用產(chǎn)品上運(yùn)行的應(yīng)用軟件的開發(fā)者,需要根據(jù)事先確定的系統(tǒng)結(jié)構(gòu)編寫程序。例如,在“該產(chǎn)品上配備A公司的
CPU及B公司的
DSP”的前提條件下,需要編寫A公司的CPU用程序、以及B公司的DSP用程序。還需要規(guī)定CPU與DSP之間的通信步驟。
CPU、
GPU及DSP等處理器有各自的長處和短處,并具有根據(jù)處理器廠商的不同、適合執(zhí)行某種處理的特點(diǎn)。在上述例子中,本來也許C公司的DSP更適合,或者將部分處理工作交給D公司的GPU,從執(zhí)行速度及耗電量等方面來看更恰當(dāng)。但是,改變處理器的種類并非易事。由于根據(jù)處理器的廠商及種類不同,程序編寫的方法也不同,因此,如果不大幅改寫程序,就不能在其他的系統(tǒng)結(jié)構(gòu)下工作。也就是說,不僅是改用不同的處理器很難,確定哪種結(jié)構(gòu)為最佳也很難。按照已確定的系統(tǒng)構(gòu)造編寫程序,就意味著剝奪了選擇處理器的自由。
可將軟件開發(fā)者制作的程序拿到許多廠商推薦的
多種處理器上試用,并自由地選擇處理器的組合。OpenCL的目的就是提供這樣的平臺。OpenCL規(guī)定了無需修改已制作完成的程序,即可在配備與原系統(tǒng)不同種類處理器的系統(tǒng)上執(zhí)行的標(biāo)準(zhǔn)API。
參與OpenCL制定工作的某半導(dǎo)體廠商技術(shù)人員對筆者表示,明確區(qū)分軟件開發(fā)者與半導(dǎo)體廠商職責(zé)范圍的分界線就是OpenCL。當(dāng)時(shí),正值筆者產(chǎn)生了“即使造成此前擁有的客戶流失也在所不惜?”的疑問。他的回答是這樣的。“這才是健康的競爭環(huán)境。在這種競爭環(huán)境中,(廠商)會為了得到客戶的認(rèn)可而全力以赴。在半導(dǎo)體產(chǎn)品上精益求精,是我們的天職”。有了OpenCL這種API的分隔,軟件開發(fā)者及設(shè)備廠商將可獲得處理器選擇的自由,而半導(dǎo)體廠商則可獲得處理器開發(fā)的自由。
百聞不如一見
順便提一下,Khronos Group的Trevett是已開始在
手機(jī)等領(lǐng)域得到廣泛應(yīng)用的圖形處理API“OpenGL ES”的提案人。他表示,“雖然如今OpenGL ES被廣泛采用,但從制定性能指標(biāo)到普及為止花費(fèi)了4年的時(shí)間”。由于性能指標(biāo)制定后經(jīng)過了2年半導(dǎo)體才面世,因此OpenGL ES的價(jià)值未能得到充分的認(rèn)識。