2015-03-19 36 views
13

我對GPU編程沒有任何瞭解,所以我想對此進行概述。我必須開發一個圖像處理項目,在智能手機的GPU上(在Android設備上)工作,但我不知道從哪裏開始。Android設備上的GPU編程

1)編程智能手機的GPU和編程其他GPU(例如Nvidia GeForce 9)是否相同?

2)我聽說過GPU的計算或圖形編程:有什麼區別?他們是平等的嗎?

3)我已經配置了Eclipse來開發Android應用程序:我還需要其他什麼工具?

4)智能手機的GPU編程(Android版)與設備無關嗎?三星S4,LG G3和其他Android設備是否一樣?

5)我需要什麼庫?我聽說過OpenCV和Tegra包的Nvidia。

你能幫我嗎?另外,你可以幫助我與任何有針對性的鏈接?

回答

1

Android使用的OpenGL ES(開放圖形Libary的嵌入式系統)

還有的OpenGL ES的不同勢版本。 我推薦使用2.0,但您也可以使用1.0或更高版本。

大多數手機支持2.0,你有更多的選擇,其速度超過1.0 因此,所有手機都支持1.0,甚至android模擬器也支持它。如果你想測試你的OpenGL ES 2.0代碼,你需要一個真實的設備。

學習OpenGL很困難,可能需要一段時間。下面是一個很好的教程,以獲得一個概述:http://blog.db-in.com/all-about-opengl-es-2-x-part-1/

蘋果智能手機也使用OpenGL ES,所以如果你瞭解它的android你也可以使用它的iPhone。

是的,所有的Android設備都使用OpenGL。

2

在Android中訪問GPU的一種簡單方法是使用OpenGL ES。 Android SDK將所有OpenGL ES公開爲java https://www.khronos.org/opengles/sdk/docs/man/

OpenGL ES允許您在GLSL(Open GL着色語言)中編寫着色器,並在運行時在GPU上編譯它。 https://www.opengl.org/documentation/glsl/

此GLSL代碼直接在GPU上運行。

有關OpenGL ES的更多信息Android中它可以在Android文檔http://developer.android.com/guide/topics/graphics/opengl.html

這個發現是一個非常原始的方法。使用庫完全取決於你想要達到與GPU

12

1)編程智能手機的GPU和例如編程其他GPU(Nvidia公司的GeForce 9)等於什麼?

並不總是如此。例如,根據您使用的API和硬件平臺,某些移動設備允許您開發與桌面GPU完全相同的程序。

例如,如果你的Tegra K1/X1設備做CUDA程序,這將是幾乎一樣的,你會有關GeForce 9

做但是,如果你使用的OpenCL,你必須要小心。一些移動設備僅支持OpenCL Embedded Profile,這意味着與桌面GPU相比,功能有限。即使某些移動設備支持OpenCL完整配置文件,仍然需要處理更少的資源,因此,仍然需要修改程序以適應移動平臺。

2)我關心GPU的計算或圖形編程: 區別是什麼?他們是平等的嗎?

圖形編程更注重圖形渲染。目標是在屏幕上繪製一些東西。您需要用於手機的主要API是用於Android的OpenGL ES,用於iOS的Metal或用於Windows的DX。

GPU的計算意味着你想完成一些與圖形渲染無關的任務,相反,你需要計算一些方程或者從輸入數字計算一些值。例如,您可能需要過濾圖像或處理某些視頻等。計算的主要API是OpenCL,CUDA和Metal。

3)我已經配置了Eclipse來開發Android應用程序:我需要哪些其他 工具?

你當然需要Android NDK。您需要OpenCL庫,或者您需要的移動設備SDK。

4)智能手機的GPU編程(Android版)與設備無關嗎?它' 對三星S4,LG G3和其他Android設備是一樣的嗎?

當然,設備能力在你所能做的事情上有很大的不同。主要區別在於手機中使用的芯片組。這將決定您應該使用哪個SDK,並且硬件功能會有很大不同。

另一件需要注意的事情是,由於硬件差異巨大,GPU編程通常不是性能可移植的。因此,一部手機上優化得非常好的源代碼在另一部手機上可能不是最好的。

5)我需要什麼庫?我關於OpenCV和Tegra pack of Nvidia。

OpenCV是計算機視覺庫。無論您需要與否,取決於您所使用的算法類型。如果您的應用程序嚴重依賴某些圖像處理和計算機視覺算法,則可能會發現OepnCV很有用。但是,你一定可以從自己簡單的庫開始。

Tegra NVPack沒什麼特別的。它只是一個包含Android開發SDK,NDK,IDE和工具以及NVidia SDK的軟件/ SDK包。您始終可以通過安裝單獨的SDK和工具來設置您自己的環境。但是如果您爲NVidia平臺開發,那麼NVPack可能更容易爲您開始。