安卓平台下ARM Mali OpenCL编程-GPU信息检测

原创 2015年04月08日 01:14:28

      对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来加速我们的计算。         

     一直以来,对于Mali GPU的OpenCL编程,一直没有环境来测试。好不容易弄到一个华为Mate7,却因为华为没有提供OpenCL driver(小道消息,华为下半年开始将会有OpenCL Drivert提供,拭目以待吧)。目前测试过的手机有魅族MX4 pro T628是带有OpenCL Driver,这个还得多亏三星的猎户座芯片。对于安卓手机如果手机是Mali GPU(如果是T6xx以下GPU,请无视,因为不支持OpenCL,例如华为P7使用的是Mali-450),如果您不确定是否有驱动(BTW:关于驱动问题询问过ARM的工作人员,需要找芯片提供商,而不是ARM),可以去豌豆荚下载OpenCL Info的小软件,该软件基本囊括了目前移动平台所有GPU的检测。

     扯了一堆的废话,当前我的平台是瑞芯的RK3288。对于Mali GPU,OpenCL Driver驱动对应系统"/system/vendor/lib/egl/libGLES_mali.so" 。

       对于常规的例子,请移步这里,这是我写的一个关于高通平台下的OpenCL例子,修改一下便可使用。而为了软件兼容不同厂家的GPU,在NDK Native code中dlopen加载OpenCL库。

    

void *getCLHandle(){
			void *res = NULL;
			res = dlopen("/system/vendor/lib/libOpenCL.so",RTLD_LAZY);   /*Adreno GPU */
			if(res==NULL){
				res = dlopen("/system/vendor/lib/libPVROCL.so",RTLD_LAZY);  /*PowerVR GPU*/
			}
			if(res==NULL){	
				res = dlopen("/system/vendor/lib/egl/libGLES_mali.so",RTLD_LAZY);   /*mali GPU*/
			}
			if(res==NULL){
					printf("No OpenCL library in your Phone ");
			}
			return res;
}
如上是我的实现方式。

做了一个小的测试软件,直接在编译成可执行程序,adb push到手机端运行。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := opencl
LOCAL_SRC_FILES := OpenCL_phone.c opera_Init.c  test.c
LOCAL_C_INCLUDES := include
include $(BUILD_EXECUTABLE)
如上是我例子的Android.mk文件。OpenCL_phone.c是dlopen OpenCL库的一些处理。opera_Init.c是对OpenCL选择平台,设备,创建上下文等之类的操作,test.c是主函数。




明天实际添加一个灰度转换的例子。

ARM嵌入式系统上OpenCL测试

By Toradex Giovanni Bauermeister 1). 简介 相比曾经,如今科技设备对处理性能和速度要求越来越高。为了应对这种技术需求,许多公司发明了不少方法来获得更好的处理性能...
  • toradexsh
  • toradexsh
  • 2016年12月12日 15:08
  • 1204

安卓平台ARM Mali OpenCL例子-灰度转换

手头一块RK3288的板子,在板子上测试了1080p一个灰度转换的OpenCL例子。OpenCL没有任何优化。例子请移步这里。 该例子是编译成安卓平台下的可执行程序。     进入jni文件夹,进行如...
  • wcj0626
  • wcj0626
  • 2015年04月09日 00:50
  • 2488

OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象

OpenCL (Open Computing Language,开放计算语言) 是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL提供了基于任务分割和数据...
  • xbinworld
  • xbinworld
  • 2015年05月16日 21:31
  • 3034

Android OpenGL库加载过程源码分析

本文简单介绍OpenGL库的加载过程。OpenGL以动态库的方式提供,因此在使用OpenGL的接口函数绘图前,需要加载OpenGL库,并得到接口函数指针。函数EGLBoolean egl_init_d...
  • yangwen123
  • yangwen123
  • 2013年09月24日 20:09
  • 6144

android 图形系统加速学习系列 (一)

Android 系统使用OpenGL的标准接口来支持3D图形功能,包含框架层及本地代码两个主要部分,这里先介绍本地代码部分。   源代码目录为:frameworks\base\opengl\libs...
  • andyhuabing
  • andyhuabing
  • 2012年01月04日 19:55
  • 9331

《Mali OpenCL SDK v1.1.0》教程样例之三“内存缓冲区”

本文讲述如何在Mali-T600系列GPU和CPU之间高效共享内存。 介绍   当处理大量数据时(在OpenCL应用中这是典型的情况),确保主机与OpenCL设备之间尽可能高效地共享内存是非常...
  • gfvvz1
  • gfvvz1
  • 2014年02月28日 16:25
  • 2818

《Mali OpenCL SDK v1.1.0》教程样例之一“Hello World”

1、算法简述   实现矩阵相加:Cn = An + Bn 。这个例子虽然很简单,但是由于矩阵元素之间相互独立,每个元素可以非常容易地进行并行计算,可以非常理想地在OpenCL中实现。 2....
  • gfvvz1
  • gfvvz1
  • 2014年02月27日 16:48
  • 3625

安卓平台下ARM Mali OpenCL编程-GPU信息检测

对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来加速我们的计算。               一直以来,对于Mali GPU的OpenCL编程,一直没有环境...
  • Tommy_wxie
  • Tommy_wxie
  • 2017年07月14日 10:08
  • 2254

安卓手机GPU OpenCL总结

前段时间,把市面上手机GPU OpenCL支持情况做了一个总结,如下。
  • wcj0626
  • wcj0626
  • 2014年07月23日 15:00
  • 4888

安卓平台下Mali-OpenCL例子

  • 2015年04月09日 00:42
  • 4.37MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓平台下ARM Mali OpenCL编程-GPU信息检测
举报原因:
原因补充:

(最多只允许输入30个字)