android - 在 android 中运行 openCL

标签 android c++ opencv opencl

好吧,有很多关于此的教程和帖子,但我不知道如何处理 libOpenCL.so 文件。许多供应商没有将它包含在手机中,但我的应用程序需要支持当今最大的可用手机,所以我需要为每个手机获取兼容的 libOpenCL.so 文件吗?

最佳答案

Android 开源项目未正式支持 OpenCL

参见:Why did Google choose RenderScript instead of OpenCL

但是,设备制造商似乎通过添加驱动程序来提供支持。

参见:Does Android support OpenCL?

意识到 OpenCL 与图形驱动程序在硬件堆栈中处于相似的层,任何特定的实现都将取决于制造商并且特定于该设备。由于片上系统的特定定制(内核数量、DSP、GPU 等),您不能只从一个 ARM64 设备获取 libOpenCL.so 并期望为另一个设备工作

我的推荐来自:C++, OpenCV and "what" for cross-platform GPU programing

如果您想要最大程度的支持 - 坚持使用 C/C++ 代码。

如果您需要 OpenCL 来使您的应用程序即使使用并行代码也能保持高性能,您的选择是检查该库是否存在并警告用户缺少支持。理想情况下,然后回退到那些没有 OpenCL 的设备上的并行化代码。

在 Google 将 OpenCL 纳入 Android 兼容性定义文档并要求某些元数据属性之前,只有应用在设备上进行检查才能知道 OpenCL 是否可用。

关于android - 在 android 中运行 openCL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44897271/

相关文章:

c++ - 使用 boost::variant 库制作 map 。如何以正确的类型存储和显示事物?

android - 在启用省电模式的 Android Nougat 或 Android Oreo 上管理互联网连接

java - eclipse 和 ADT 版本错误

c++ - std::to_integer 的目的是什么?

iphone - OpenCV.Framework 不为 armv7s 架构编译

java - OpenCV Java - 如何裁剪图像中检测到的圆圈

python - 在opencv中应用sobel和laplacian滤波器后图像的边缘检测

java - 在 Android 中使用外部媒体播放器播放视频

android - 调整相机预览大小

c++ - Visual Studio 2010下的Socket编程,非托管C++