安卓系统支持OpenCL吗?

28

最近我想在Android上使用OpenCL开发并行计算应用程序。据我所知,Android系统不包括“libopencl.so”,但仍有一些网站或博客展示了在Android上开发OpenCL的方法。Android支持OpenCL吗?如果支持,我该如何在Android上开发OpenCL?


1
对于 ARM 架构,只需链接到 libGLES_mali.so。对于高通架构,我认为您需要使用 libOpenCL.so。但是,有时它们不在路径中,因此请在“/system/vendor/lib”中查找它们。 - DarkZeros
在我的Android手机中,没有libOpenCL.so文件,我应该去哪里找这个文件?我的Android GPU类型是Imagination PowerVR SGX544。 - liu jie
这可能会有所帮助:http://community.imgtec.com/developers/powervr/ 我与ARM和高通合作,从未与Imagination合作过。 - DarkZeros
1
如何进行版本控制:https://dev59.com/0Gox5IYBdhLWcg3wvWsy - Ciro Santilli OurBigBook.com
请查看此链接:https://dev59.com/0Gox5IYBdhLWcg3wvWsy#54105051 - 42n4
根据我的经验,三星/Sony/LG/Motorola在大多数最新的手机上添加了OCL运行时,并允许在Android>7.0上进行访问。在Anroid商店中搜索OpenCL。有一些应用程序使用它,在最新的Android上共享COL运行时。 - Hashman
4个回答

17

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 Mali:

/system/vendor/lib/egl/libGLES_mali.so
or /system/lib/egl/libGLES_mali.so

PowerVR:

/system/vendor/lib/libPVROCL.so

你可以使用 OpenCL-Z Android 来检查 Android 设备上的 OpenCL 可用性和能力。

基于英特尔的 Android 设备也应该与 Adreno 位于同一位置:/system/vendor/lib/libOpenCL.so - Lrdx
@Lrdx,基于英特尔的设备可能会使用其他供应商的GPU。 我有一台三星Tab 3 3G平板电脑,使用英特尔Atom Z2560。然而,GPU是PowerVR SGX544MP2: /system/vendor/lib/libPVROCL.so - mdew
@mdew 我忘记了英特尔有一些带有PowerVR图形的芯片。我的评论是针对带有HD Graphics GPU的芯片的。这可能会改变,因为没有标准化的地方。 - Lrdx
你好,我该如何检查我的设备上是否有那个.so文件? - user8469759
目前还没有好的方法,你必须尝试查询上述所有可能的路径,以查看是否可用OpenCL驱动程序。幸运的是,由于移动GPU供应商数量有限,所以需要尝试的可能性也很有限。因此,实际上不应该太糟糕。 - Robert Wang

4
严格来说,Android不支持OpenCL。这是谷歌(糟糕的)选择。但是,如果您可以获取适用于其的OpenCL库,则可以在Android设备上运行OpenCL应用程序。从Kirtan提供的链接中,我建议选择索尼路线,因为它是最直接的(即手机已经配备了OpenCL),我认为这是高通的Adreno GPU。
我知道唯一可用的Imagination OpenCL是在this dev board上。它有一个SGX544,所以您可能可以从该板上获取驱动程序并将其放在您的设备上。它可能会起作用.....
另外:OpenGL ES 3.1支持GL计算着色器,并且在Android上得到支持,因此如果您想要使用GPU进行计算,则可能是一个选项。

3

谢谢,目前只有Adreno或Mali GPU支持移动OpenCL,而不是所有手机,这对我来说是个坏消息。 - liu jie
很高兴看到最近的变化。现在除了谷歌手机,大多数中高端手机都支持OpenCL。这对于OpenCL开发人员来说是个好消息。 - Robert Wang

0

我知道这是一篇旧帖子,但可能对其他访问者有所帮助。

从API级别24开始,在Android上执行GPGPU的更好解决方案是使用Vulkan的计算阶段。

Vulkan不仅用于图形,管道中的计算阶段是独立的,可以用来运行内核。

我最近发布了一个Java module,它使用了Vulkan的计算阶段。它使用GLSL程序作为内核,但将来我也可以添加OpenCL C支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接