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

2023-11-20

      对于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是主函数。




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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓平台下ARM Mali OpenCL编程-GPU信息检测 的相关文章

  • OpenCL 在调用 clGetPlatformIDs 时崩溃

    我是 OpenCL 新手 在配备 Intel R HD Graphics 4000 运行 Windows 7 的 Core i5 计算机上工作 我安装了支持 OpenCL 的最新 Intel 驱动程序 GpuCapsViewer 确认我有
  • 嵌入式 C++ (ARM9) 单元测试

    我来自 Java 和 JUnit 的世界 我演示了 Hudson 以及我使用 JUnit 取得的所有成果 我想在嵌入式设备上对 C 代码执行相同的操作 但找不到从哪里开始 该项目使用 iccarm exe IAR 编译器 进行编译 现在使用
  • 如何修改内核DTB文件

    Summary 我目前正在为定制板编译 Linux 内核 内核 模块和 DTB 以及一些定制驱动程序 有时 我会编译内核并意识到 DTB 文件中的兼容性字符串不是自定义驱动程序正在寻找的内容 现在 我可以解决此问题的唯一方法是修改 DTS
  • 将结构体偏移属性赋予汇编器

    如何将 C 结构体的偏移量发送到汇编代码 例如 在我的 C 代码中 typedef struct unsigned int a unsigned int b CMyStruct 我向 ASM 函数发送一个 CMyStruct 结构的指针 假
  • 如何在 Windows 上的 nvidia GPU 的 Visual Studio 2010 中配置 OpenCL?

    我在华硕笔记本电脑上的 Wwindows 7 操作系统上使用 NVIDIA GeForce GTX 480 GPU 我已经为 CUDA 4 2 配置了 Visual Studio 2010 如何在 Visual Studio 2010 上为
  • ARM Linux 如何模拟 PTE 的脏位、访问位和文件位?

    As per pgtable 2 level h https git kernel org cgit linux kernel git torvalds linux git tree arch arm include asm pgtable
  • 用于 RHEL 的 gdb-multiarch

    我正在尝试寻找方法来运行gdb 多架构RHEL 中的命令 我已经安装了用于 ARM 处理的 QEMU 模拟器 我想安装GDB进行调试 我能够安装GDB 多体系结构在 Ubuntu 中运行命令成功 sudo apt get GDB multi
  • 如何使用 gcc 编译代码和 ARM Cortex A8 目标进行调用图分析?

    我对这个已经咬牙切齿了 我需要在 ARM 板上进行分析并需要查看调用图 我尝试使用 OProfile Kernel perf 和 Google 性能工具 一切正常 但不输出任何调用图信息 这使我得出结论 我没有正确编译代码 我在编译 C 代
  • 杀死 OpenCL 内核

    有没有办法通过 OpenCL API 终止正在运行的 OpenCL 内核 我在规范中没有找到任何内容 我能想到的唯一解决方案是 1 定期检查内核中主机希望内核停止时写入的标志 或 2 在单独的进程中运行内核并终止整个进程 我认为这两个都不是
  • 尝试使用 qemu-arm 运行arm二进制文件时如何解决“加载共享库时出错”?

    我正在运行 Linux Mint 14 并安装了 qemu qemu user 和 gnueabi 工具链 我编译了 test carm linux gnueabi gcc test c o test 当我尝试跑步时qemu arm usr
  • arm-thumb指令集的blx指令如何支持4MB范围

    读自https www keil com support man docs armasm armasm dom1361289866046 htm https www keil com support man docs armasm arma
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • 在内核 OpenCL 中实现 FIFO 的最佳方法

    目标 在 OpenCL 中实现下图所示 OpenCl 内核所需的主要内容是将系数数组和临时数组相乘 然后最后将所有这些值累加为 1 这可能是最耗时的操作 并行性在这里非常有帮助 我正在为内核使用一个辅助函数来执行乘法和加法 我希望这个函数也
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 设备树不匹配:.probe 从未被调用

    我无法理解设备树的工作原理 或者具体来说为什么该驱动程序无法初始化 这是在 android 版本 3 10 的 rockchip 供应商内核中 驱动程序 看门狗 rk29 wdt c 为了可读性而减少 static const struct

随机推荐

  • Node服务器-express框架

    1 Express认识初体验 2 Express中间件使用 3 Express请求和响应 4 Express路由的使用 5 Express的错误处理 6 Express的源码解析 一 手动创建express的过程 1 在项目文件的根目录创建
  • 爬虫从入门到放弃——组件的使用和定制

    以前我们提到了WebMagic的组件 WebMagic的一大特色就是可以灵活的定制组件功能 实现你自己想要的功能 在Spider类里 PageProcessor Downloader Scheduler和Pipeline四个组件都是Spid
  • STM32 HAL——GPIO

    HAL的代码规范建议 以下内容是我自己参照HAL做的总结 如果公司有固定的编码规范 就跟公司保持一致 如果没有 那就推荐和所用库保持一致 注意 因人而异 并不具有普遍适用性 HAL库有如下代码规范 1 目录名除了专有词汇外 统一是单词首字母
  • IDEA去除掉虚线,波浪线,和下划线实线的方法

    推荐一下个人的公众号 终码一生 专注于Java技术学习 开源项目分享和常见问题解决等 喜欢的小伙伴可以关注下 感谢大家的支持 初次安装使用IDEA 总是能看到导入代码后 出现很多的波浪线 下划线和虚线 这是IDEA给我们的一些提示和警告 但
  • 【机器学习】核函数

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 核方法 核技巧 非线性分类问题是指通过利用非线性模型才能很好地进行分类的问题 如图 1 1 1 所示 表示正样本 表示负样本 显然无法用直线 线性模型 将正负样本正确分开 但是可以用
  • android service 返回值,Android平台调用Web Service:线程返回值(示例代码)

    接上文 前文中的遗留问题 对于Java多线程的理解 我曾经只局限于实现Runnable接口或者继承Thread类 然后重写run 方法 最后start 调用就算完事 可是一旦涉及死锁以及对共享资源的訪问和随时监控线程的状态和运行顺序和线程返
  • macOS M2使用conda配置pytorch环境

    一 conda 首先我们需要有conda miniconda的安装配置流程可以看这个http t csdn cn ShcNb 二 进入官网 https pytorch org 选择对应的版本 复制下面的命令 conda install py
  • 2023年1月手机热门品牌型号排行榜(手机行业趋势分析)

    近期苹果降价引起人们的关注 并且优惠较大 iPhone 14 Pro系列在苹果官方授权渠道均降价 线下授权门店普遍降价700元左右 iPhone Pro与Pro Max作为苹果的旗舰产品 通常被认为是更为保值的机型 一般来说 不会在短期内大
  • ueditor编辑器右键粘贴、复制不能用的解决办法

    ueditor编辑器功能非常强大 现在比较多的网站页面或者系统中都集成了百度的ueditor编辑器 使系统编辑文本变得非常容易 但是默认状态下 在使用google内核的浏览器时 会出现右键粘贴复制都不能用的情况 会提示使用ctrl v粘贴
  • WEB交互界面易用性设计和验收的指导性原则

    随着企业intranet和国际internet的迅速发展 越来越多的工作流程 商务交易 教育 培训 会议和讲座 以及个人消费娱乐都被转移到所谓的万维网 World Wide Web 以下简称WEB 上来了 与此相对应的是交互操作的复杂性越来
  • keil device没有芯片

    若试了各种办法没有找到解决方案 可以试试我这个方法 若工程后缀是 uvproj 则可能是keil4的工程 而电脑装的是keil5的版本 改为 uvprojx后即可正常找到芯片了 也可以Project gt Manage gt Migrate
  • Java多线程的一个简单示例

    Java多线程简单示例 代码如下 public class Canteen extends Thread 餐总数 static int rice 20 取餐凭证 static Object key KEY public Canteen St
  • Spring Profiles提供了一种隔离应用程序配置的方式

    24 Profiles Spring Profiles提供了一种隔离应用程序配置的方式 并让这些配置只能在特定的环境下生效 任何 Component或 Configuration都能被 Profile标记 从而限制加载它的时机 Config
  • MySQL 8.0字符集校正

    MySQL升级为8 0版本时 之前版本的字符集往往是不同的 需要校正 执行下面的三个SQL语句的查询结果 可以从库 表 列三个层面对字符集进行校正 库 select concat alter database schema name def
  • pytest的介绍与使用

    pytest介绍 pytest整合了unittest 包含了unittest中的方法 并且比其更轻便快捷 而且结合Allure报告能够清晰的生成测试报告 1 安装 pip install pytest 2 测试文件 test py test
  • C# 选择ListView 报错误:InvalidArgument=“0”的值对于“index”无效。

    加判断 if this ListView SelectedItems Count gt 0 问题解决
  • flutter 安卓打包出现:Transform‘s input file does not exist:

    我的版本 Android studio 4 0 targetSdkVersion 30 出现了这个问题 解决方案 在你的build gradle文件里面添加一句话就可以了 android studio 4 0 以上打包会出现这个问题 lin
  • 工业安全生产信息化平台的基本架构和关键功能分享

    工业安全生产信息化平台是指利用信息技术手段 将工业安全生产管理与数据采集 传输 处理相结合 实现对工业安全生产全过程的数字化 信息化 智能化管理的平台 它通过集成多种信息系统和设备 实现对重大危险源监控预警 安全风险分级管控 安全生产一张图
  • SpringBoot统一异常拦截处理

    前言 大家你好 这是我的第一篇博客 我会把我所学所悟的知识以最简单的语言描述清楚 让大家通俗易懂 正文 下面我要对springboot 1 5 8 RELEASE 中异常拦截处理进行讲解 项目中我们是一定要碰到的情况就是无论在控制层 业务层
  • 安卓平台下ARM Mali OpenCL编程-GPU信息检测

    对于ARM Mali GPU 目前是支持OpenCL1 1 所以我们可以利用OpenCL来加速我们的计算 一直以来 对于Mali GPU的OpenCL编程 一直没有环境来测试 好不容易弄到一个华为Mate7 却因为华为没有提供OpenCL