【问题标题】:Is it possible to program GPU for Android是否可以为 Android 编程 GPU
【发布时间】:2012-09-09 05:52:03
【问题描述】:

我现在在 Android 上编程,我想知道我们现在是否可以在 Android 上使用 GPGPU?我曾经听说 Renderscript 将来可能会在 GPGPU 上执行。但我想知道我们现在是否可以在 GPGPU 上编程?如果我可以在 Android GPGPU 上编程,我在哪里可以找到一些教程或示例程序?感谢您的帮助和建议。

到目前为止,我知道 OpenGL ES 库现在使用 GPU 进行加速,但我想使用 GPU 进行计算。我想做的是加速计算,所以我希望使用一些API库,例如OpenCL。

【问题讨论】:

  • 但是我从网站developer.android.com 看到并没有告诉我Renderscript 现在可以在GPU 上使用。你的意思是 OpenGL ES 现在可以用于计算了吗?我会试试看。谢谢你。 @StephanBranczyk
  • 是的,我问的是 GPGPU。所以我应该尝试 OpenCL 而不是 OpenGL。但是是否有任何适用于 Android 的 OpenCL 库,例如 OpenCL ES?谢谢你。 @StephanBranczyk
  • 感谢您的建议,我已经编辑了我的问题。 @StephanBranczyk
  • 您可能应该接受 Morrison Chang 的回答而不是之前的回答(假设 StackOverflows 的 UI 允许您这样做)。 StackOverflow 的目标是让自己对人们在谷歌上搜索答案有用,并且标记一个真正没有回答问题的答案,你想问的,不符合这个目的。
  • 嗯,谢谢你的建议,@StephanBranczyk 我有几天没上网了,因为我忙于做其他工作。现在我正在尝试在我的工作中使用 OpenGL ES 2.0,我希望先完成一个原型。而且我还听说GL ES也可以在编程中使用GPU。我现在正在尝试。

标签: android gpu renderscript


【解决方案1】:

2021 年 4 月更新

Google 宣布在 Android 12 中使用 deprecation of the RenderScript API in favor of Vulkan

Android 7.0 Compatibility Definition Document - 3.3.1.1. Graphic Libraries 中提供了制造商包含 Vulkan API 的选项。

原答案

其实Renderscript Compute此时并不使用GPU,而是专为它设计的

来自在 Android 平台上工作的 Romain Guy:

  • Renderscript 计算目前受 CPU 限制,但使用 for_each 构造,它将立即利用多个内核
  • Renderscript Compute 设计为在 GPU 和/或 CPU 上运行
  • Renderscript Compute 无需编写 JNI 代码,并为您提供独立于架构的高性能结果
  • 从 Android 4.1 开始,Renderscript Compute 可以受益于 SIMD 优化(ARM 上的 NEON)

https://groups.google.com/d/msg/android-developers/m194NFf_ZqA/Whq4qWisv5MJ

【讨论】:

  • 谢谢你,我现在正在尝试使用它。我不知道 Renderscript 是否会满足我的需求,但我会尝试一下。我真的很困惑,因为很多人告诉我它有效,而其他人告诉我它无效。
  • 它仅适用于 3.0 及以上的设备。您仍然没有解释您要做什么(图像处理、图形计算等)。
  • Renderscript 缺少文档。但我听说在 Nexus 4 和 Nexus 10 中,RenderScript 正在使用 GPU 来加速计算。我的问题是,如果你想使用 GPGPU,为什么要投资 RenderScript?它仅适用于 Android。 OpenCL 是方向,但在 Android 和 IOS6 上还没有真正准备好。 OpenGLES 2.0 非常适合您使用。
  • 如果你知道 OpenGL ES 2.0 在那里做,但如果你不想考虑顶点数组、纹理和着色器管道,Renderscript 简化了“普通”程序员使用的入口点CPU/GPU。与 OpenCL 相比,Renderscript 更简单。设置一个 OpenCL 计算内核需要多少行代码?尽管缺乏文档,但我同意 Android 的唯一特性。
【解决方案2】:

是的,有可能。

您可以使用 renderscript 或 opengGL ES 2.0 。

renderscript 适用于 android 3.0 及更高版本,openGL ES 2.0 适用于大约 95% 的设备。

【讨论】:

  • 所以我现在可以使用渲染脚本在 GPU 上编程,就像 PC 上的 CUDA 一样?谢谢你,我会努力学习渲染脚本。
  • 祝你好运。还有一些关于它的视频和教程,但我认为它们还不够。希望有更多信息,以便开发人员创造出令人惊叹的东西。
【解决方案3】:

从 Android 4.2 开始,Renderscript 可以在计算中涉及 GPU(在某些情况下)。 更多信息在这里:http://android-developers.blogspot.com/2013/01/evolution-of-renderscript-performance.html

据我了解,ScriptIntrinsic 子类经过优化,可以在兼容硬件(例如,带 Mali T604 的 Nexus10)上的 GPU 上运行。文档: http://developer.android.com/reference/android/renderscript/ScriptIntrinsic.html

当然,您可以决定使用 OpenCL,但 Renderscript 保证(由 Google,作为 Android 本身的一部分)即使在不支持 GPGPU 计算的硬件上也能运行,并且将使用任何其他可用的加速方式运行它的硬件。

【讨论】:

    【解决方案4】:

    有多种选择:您可以使用几乎所有设备都支持的 OpenGL ES 2.0,但 GPGPU 的功能有限。您可以使用 OpenGL ES 3.0,使用它可以在 GPU 处理方面做更多的事情。或者您可以使用 RenderScript,但这是特定于平台的,而且不会影响您的算法是在 GPU 还是 CPU 上运行。关于这个主题的总结可以在这篇硕士论文中找到:Parallel Computing for Digital Signal Processing on Mobile Device GPUs

    您还应该查看ogles_gpgpu,它允许在 Android 和 iOS 上通过 OpenGL ES 2.0 进行 GPGPU。

    【讨论】:

    猜你喜欢
    • 2011-03-03
    • 2012-04-06
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多