【问题标题】:running openCL in android在android中运行openCL
【发布时间】:2017-12-07 09:54:50
【问题描述】:

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

【问题讨论】:

    标签: android c++ opencv opencl


    【解决方案1】:

    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 甚至可用。

    【讨论】:

      【解决方案2】:

      补充@Morrison Chang 的答案:

      • 您不能依赖所有设备中的所有版本的 OpenCL 来支持所有内容。所以我会做一个动态库加载,并在运行时查询 OpenCL 方法是否可用。

      • 关于支持 OpenCL 的库,有时甚至不会这样调用。比如libGLESmali.so有OpenCL符号,可以直接使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多