Android设备上的GPU编程

Sal*_*lva 25 android gpu image-processing

我不了解GPU编程,我想对此进行概述.我必须开发一个图像处理项目,在智能手机的GPU上工作(在Android设备上),但我不知道从哪里开始.

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

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

3)我已经配置Eclipse来开发Android应用程序:我需要哪些其他工具?

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

5)我需要什么样的图书馆?我听说过Nvidia的OpenCV和Tegra包.

你能帮帮我吗?另外,你能帮我解决任何有针对性的链接吗?

Rob*_*ang 17

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)我需要什么样的图书馆?我对Nvidia的OpenCV和Tegra包进行了大量宣传.

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

Tegra NVPack没什么特别的.它只是一个软件/ SDK包,包含Android开发SDK,NDK,IDE和工具,以及NVidia的SDK.您始终可以通过安装单独的SDK和工具来设置自己的环境.但是,如果您为NVidia平台开发,NVPack可能更容易开始.


Ale*_*nus 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/

Apple 智能手机也使用 OpenGL ES,因此如果您在 Android 上学习它,您也可以将其用于 iPhone。

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


Mit*_*art 5

在 android 中访问 GPU 的一种简单方法是使用 OpenGL ES。android SDK 将所有 OpenGL ES 公开到 java https://www.khronos.org/opengles/sdk/docs/man/

OpenGL ES 允许您使用 GLSL(开放 GL 着色语言)编写着色器并在运行时在 GPU 上编译它。 https://www.opengl.org/documentation/glsl/

此 GLSL 代码直接在 GPU 上运行。

有关 Android 中 OpenGL ES 的更多信息,请参阅 Android 文档http://developer.android.com/guide/topics/graphics/opengl.html

这是一种非常原生的方法。使用库完全取决于您想要使用 GPU 实现的目标