在Android上运行openCL
running openCL in android
嗯,有很多关于这个的教程和帖子,但我不确切了解如何处理 libOpenCL.so 文件。许多供应商没有将其包含在手机中,但我的应用目前需要支持最大可用手机,那么我是否需要为每个供应商获取兼容 libOpenCL.so 文件?
OpenCL 不受 Android 开源项目的正式支持
参见:为什么Google选择RenderScript而不是OpenCL
但是,设备制造商似乎通过添加驱动程序来包括支持。
参见:Android 是否支持 OpenCL?
请注意,OpenCL 在硬件堆栈中与图形驱动程序处于类似的层,任何特定的实现都将取决于制造商,并且特定于该设备。由于片上系统特定的自定义(内核数量、DSP、GPU 等(,您不能只从一台 ARM64 设备中获取 libOpenCL.so 并期望为另一台设备工作。
我的推荐来自:C++,OpenCV和跨平台GPU编程的"什么">
如果你想要最大的支持 - 坚持使用 C/C++ 代码。
如果您需要 OpenCL 使您的应用程序即使在使用并行化代码时也能保持性能,您的选择是检查库是否存在,并警告用户缺乏支持。理想情况下,然后回退到没有 OpenCL 的设备上的并行化代码。
在Google将OpenCL作为Android兼容性定义文档的一部分并需要一些元数据属性之前,只有通过应用程序检查设备才能知道OpenCL甚至可用。
补充@Morrison张的答案:
-
您不能依赖所有设备中的所有 OpenCL 版本来获得所有支持。所以我会做一个动态库加载,并在运行时查询 OpenCL 方法。
-
关于支持 OpenCL 的库,有时甚至不是这样调用的。例如
libGLESmali.so
具有OpenCL符号,可以直接使用。
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 使用std::vector的OpenCL矩阵乘法
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 是否可以在多线程而不是 cuda/opencl C++运行 GPU?
- 测量 OpenCL 应用程序的运行时间
- 在Android上运行openCL
- OpenCL仅在循环呼叫时停止运行
- 我的OpenCL测试的运行速度不超过CPU
- FFT 2D 内核运行时 =0 在 OpenCL 中
- 如何使用Visual Studio从命令行运行OpenCL程序
- 如何在 OpenCL 中运行时获取计算单元 ID
- 如何让 OpenCL 在我的 GPU 上运行
- 在没有兼容硬件的情况下运行OpenCL
- OpenCL / c++主机代码并发运行和内存维护
- 是否有可能在OpenCL中并行运行求和计算?
- OpenCL(意外地)在尝试运行内核代码时冻结