【问题标题】:GPU programming on Android devicesAndroid 设备上的 GPU 编程
【发布时间】:2015-05-22 10:08:52
【问题描述】:

我对 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 包。

你能帮我解决这个问题吗?另外,您能帮我提供任何有针对性的链接吗?

【问题讨论】:

    标签: android image-processing gpu


    【解决方案1】:

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

    并非总是如此。例如,根据您使用的 API 和硬件平台,某些移动设备允许您开发与桌面 GPU 完全相同的程序。

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

    但是,如果您使用 OpenCL,则需要小心。一些移动设备仅支持 OpenCL Embedded Profile,这意味着与桌面 GPU 相比功能有限。即使某些移动设备支持 OpenCL full profile,但您需要处理的资源仍然较少,因此仍需要修改程序以适应移动平台。

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

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

    【讨论】:

      【解决方案2】:

      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 上使用它。

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

      【讨论】:

        【解决方案3】:

        在 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 上运行。

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

        这是一种非常原生的方法。使用库完全取决于你想用 GPU 实现什么

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-04
          • 1970-01-01
          • 1970-01-01
          • 2015-10-29
          • 2012-04-23
          • 2010-09-12
          相关资源
          最近更新 更多