在android上要开发opencl,手机端要有libopencl.so文件(也就是opencl驱动);但是现在android手机端很少有这个文件;原因是虽然AMD、Intel、NVIDIA、苹果等支持opencl,但是google好像不太支持opencl;在移动端,google有RenderScript(渲染脚本,也是基于异构计算的思想实现的API,优点是跨平台性好,适合各种android操作系统,但是性能比opencl稍差点);google要推广自己的API的可能性大一些;因此大部分android手机支持RenderScript,却很少有支持opencl的。(网上有一个opencl
info 小程序可以判断手机是否支持opencl)。
我从网上找了一个libopencl.so库,是Qualcomm(高通公司)生产的Adreno3 GPU支持的驱动(但是这个驱动没有集成到手机系统中),通过一个向量相加的小例子实践,但是在真机(我的手机是Imagination Technologies公司的GPU,手机没有opencl驱动,我把驱动拷到手机上)上和android模拟机上都没有成功,我想问题应该出在驱动上,乱用驱动应该是不行的。
这里有收集到的一些资料:
1.关于opencl:
高通平台下opencl小例子:http://blog.csdn.net/wcj0626/article/details/26272019;
安卓手机GPU opencl总结 : http://blog.csdn.net/wcj0626/article/details/38063791;
mali的GPU对opencl的支持:http://arrayfire.com/getting-started-with-opencl-on-android/
高通的GPU 对opencl 留有后门:https://maxlv.net/how-to-enable-opencl-on-nexus-5/
书籍:opencl编程指南;
Heterogeneous Computing with OpenCL ;
opencl in action;
以及百度百科自己的手机型号;百科GPU型号。
2.关于Renderscript:
资料较少;最主要的参考资料是 官方API:https://stuff.mit.edu/afs/sipb/project/android/docs/reference/android/renderscript/package-summary.html。
API部分翻译:http://xiaxveliang.blog.163.com/blog/static/2970803420139844152392/
google学术里搜 renderscript有相关的论文介绍;具体论文的名字不记得了。。