最近我想使用OpenCL在android上开发并行计算应用程序。据我所知,Android系统不包括"libopencl.so",但仍有一些网站或博客显示OpenCL在Android上的开发。Android支持OpenCL吗?如果是这样的话,我应该如何在android上开发OpenCL?
2016年5月20日更新
对于所有具有arm64-v8a
ABI的设备,OpenCL库也可以位于lib64
文件夹中。
因此,当您检查OpenCL库时,请确保也检查相应的lib64
文件夹(如果您更喜欢arm64-v8a
作为应用程序的第一个ABI,则可能需要首先检查lib64
文件夹)。
例如:/system/vendor/lib64/libOpenCL.so
原始答案:
自2014年以来,支持OpenCL的手机越来越多。
以下是OpenCL库的位置:
高通Adreno:
/system/vendor/lib/libOpenCL.so
or /system/lib/libOpenCL.so (older devices)
ARM马里:
/system/vendor/lib/egl/libGLES_mali.so
or /system/lib/egl/libGLES_mali.so
PowerVR:
/system/vendor/lib/libPVROCL.so
您可以使用OpenCL-Z Android来检查OpenCL在Android设备上的可用性和功能。
严格来说,Android不支持OpenCL。这是谷歌(糟糕的)选择。然而,如果你能获得OpenCL库,你可以在你的Android设备上运行OpenCL应用程序。从Kirtan提供的链接来看,我推荐索尼的路线,因为它是最直接的(即手机上已经安装了OpenCL),我相信它是高通的Adreno GPU。
据我所知,Imagination OpenCL的唯一可用性就是在这个开发板上。它有一个SGX544,所以你可以从那个板上取下驱动程序,然后把它们放在你的设备上。它可能会起作用。。。。。
顺便说一句:OpenGL ES 3.1支持GL计算着色器,并在Android上受支持,因此您可能希望使用GPU进行计算。
您可以参考以下链接
https://software.intel.com/en-us/android/articles/opencl-basic-sample-for-android-os
http://arrayfire.com/getting-started-with-opencl-on-android/
http://developer.sonymobile.com/2013/10/29/boost-the-performance-of-your-android-app-with-opencl/
我知道这是一篇旧帖子,但可能会对其他访问者有所帮助。
从API 24级开始,在Android上执行GPGPU的更好解决方案是使用Vulkan的计算阶段。
Vulkan不仅用于图形,管道中的计算阶段是独立的,可以用于运行内核。
我最近发布了一个使用Vulkan计算阶段的Java模块。它使用GLSL程序作为内核,但将来我也可以添加对OpenCLC的支持。