好吧,有很多关于此的教程和帖子,但我不知道如何处理 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/