【问题标题】:Configuring OpenCl over Android Platform在 Android 平台上配置 OpenCl
【发布时间】:2015-06-16 02:20:32
【问题描述】:

如何使用任何 IDE 在 windows 或 linux 中为 android 平台配置 OpenCL 环境?我想在智能手机上使用 OpenCL 的 GPU。

【问题讨论】:

标签: android configuration opencl gpgpu


【解决方案1】:

Android 没有对 OpenCL 的官方支持,Google 公开反对它,甚至删除了非官方驱动程序http://www.anandtech.com/show/7191/android-43-update-for-nexus-10-and-4-removes-unofficial-opencl-drivers。即使您的硬件仍然有 OpenCL 驱动程序,您也无法在 Google Play 中分发该应用程序,因此它几乎没有用处。

对于 Android,您最好使用 Google 的 Renderscript(他们讨厌 OpenCL 的原因,他们希望使用他们的解决方案)http://developer.android.com/guide/topics/renderscript/compute.html

您可以使用 Renderscript 轻松编写某些算法。它基本上类似于 OpenCL,但它没有本地内存的概念,并且不支持访问线程 ID。但对于简单的图像处理或粒子模拟之类的事情,它是完美的。

如果您出于某种原因必须使用 OpenCL,并且您的目标硬件支持它,只需使用 adb pull 将 libOpenCL.so 从手机中取出,将其复制到 ndk lib 目录,并将 OpenCL 包含头文件放入包含路径你可以走了。

【讨论】:

  • 您可以在许多 Android 硬件设备上使用 opencl,而不仅仅是 google 的。例如,许多较新的 Sony 设备都有 opencl 驱动程序和加速。请参阅developer.sonymobile.com/2013/10/29/… 您可能会发现渲染脚本计算受限且难以优化。
【解决方案2】:

基本上,要开发适用于 Android 的 OpenCL 程序/应用程序,您需要以下内容:

  1. Android SDK、Android NDK
  2. Cygwin(如果在 Windows 下)
  3. OpenCL 头文件(可从Khronos website 下载)
  4. OpenCL 库文件。对于不同的芯片供应商,该库位于不同的路径下。详情请见here

  5. 用 C/C++ 开发 OpenCL 程序。使用 ndk-build 编译到共享库。

  6. 使用 Android Studio 开发您的应用程序。使用 JNI 从本机共享库中调用与 OpenCL 相关的函数。

【讨论】: