【新聞內容】年初的時候,有好事者在Nexus 4/10的安卓4.2系統中發現了OpenCL驅動的痕跡,並證實基本可用,但並沒有Google官方的支持。即便如此,也讓人看到了移動平台通用加速計算的曙光。
現在安卓4.3已經降臨Nexus 4/7/10,OpenCL的情況又如何呢?很不幸,Google把它們給徹底刪掉了。
我們知道,OpenCL是一種並行和異構計算API標準,得到了AMD、Intel、NVIDIA、蘋果等的大力支持,ARM、Imagination、高通的移動GPU也都宣稱已經做好了支持OpenCL的準備,但一直沒有相應的驅動。
Google始終都對OpenCL興趣不大,因為他們更想在安卓上推廣自己的RenderScript,它和OpenCL的關係有點類似Java之於C+彙編。
按照設想,RenderScript可以在任何安卓設備之間移植,無需考慮底層硬件,程序員也不用關心硬件細節,比如它不允許你選擇特定的代碼在CPU、GPU還是DPS上運行,完全由驅動自動決定。這顯然大大增強了可移植性,編程也更簡單,只不過可能會犧牲一些性能,不如低級語言優化代碼,此外還缺乏與圖形的交互,並且不支持Android NDK。
其實兩種語言是互補的。OpenCL展現了更多硬件細節,對於高級程序員是個強大的工具,可以充分優化、發揮異構系統的計算性能,但是使用難度比較大,需要仔細編程。
根據Google工程師的非官方說法,Google主要是擔心經驗不足的程序員不能正確使用OpenCL,比如有人可能在某個機型上測試、優化了代碼,但在其它設備上可能會很糟糕,更何況安卓設備五花八門,做到一一優化幾乎是不可能的,和硬件無關的RenderScirpt這時候就體現出優勢來了。
看起來Google寧可犧牲部分設備的最佳性能,也要保證整個平台的一致性。
此外,NVIDIA一直在努力將CUDA帶往移動平台,開發了CUDA on ARM,明年的下代Tegra處理器也將支持CUDA,但是Google現在這樣的態度恐怕非常不利。
| |
|