安卓设备上的GPU编程

31

我对GPU编程没有任何了解,希望能够得到一个概述。我需要开发一个图像处理项目,在智能手机的GPU上进行(在Android设备上),但我不知道从哪里开始。

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

2)我听说过计算或图形编程GPU:它们之间有什么区别?它们是相等的吗?

3)我已经配置了Eclipse以开发Android应用程序:我还需要什么工具吗?

4)智能手机的GPU编程(针对Android)与设备无关吗?对于三星S4、LG G3和其他Android设备是否相同?

5)我需要使用哪个库?我听说过OpenCV和Nvidia的Tegra包。

你能帮我解决这个问题吗?此外,你能帮我提供一些有针对性的链接吗?

3个回答

20

1)编程智能手机的GPU和其他GPU(例如Nvidia GeForce 9)是相等的吗?

并不总是。例如,取决于您使用的API和硬件平台,一些移动设备允许您开发与桌面GPU完全相同的程序。

例如,如果您在Tegra K1 / X1设备上进行CUDA程序,则几乎与您在GeForce 9上执行的操作相同。

但是,如果您使用OpenCL,就需要小心谨慎。一些移动设备仅支持OpenCL嵌入式配置文件,这意味着与桌面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和Nvidia的Tegra包。

OpenCV是计算机视觉库。你是否需要它取决于你所使用算法的类型。如果你的应用程序严重依赖某些图像处理和计算机视觉算法,那么你可能会发现OpenCV很有用。但是,你也可以始终从自己的简单库开始。

Tegra NVPack没有什么特别之处。它只是一个软件/SDK捆绑包,包含Android开发SDK、NDK、IDE和工具,以及NVidia的SDK。你总是可以通过安装单独的SDK和工具来设置自己的环境。但如果你开发NVidia平台,NVPack可能更容易让你入手。


6
使用OpenGL ES是在Android中访问GPU的简单方法。 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上运行。
有关Android中的OpenGL ES的更多信息,请参阅Android文档http://developer.android.com/guide/topics/graphics/opengl.html
这是一种非常本地的方法。使用库完全取决于您想要通过GPU实现什么。

5

Android 使用OpenGL ES(嵌入式系统的开放图形库)

OpenGL ES 有不同的版本。我建议使用2.0,但你也可以使用1.0或更高版本。

大多数手机都支持2.0,相比1.0更快,而且选项更多。

学习OpenGL很难,可能需要一段时间。这里有一个好的教程,可以让你了解概述:http://blog.db-in.com/all-about-opengl-es-2-x-part-1/

苹果智能手机也使用OpenGL ES,因此如果你在Android上学习它,也可以在iPhone上使用它。

是的,所有的Android设备都使用OpenGL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接