PowerVR与BeagleBoneBlack开发的乐趣:让低成本开发更容易

2023-10-08 20:10

本文主要是介绍PowerVR与BeagleBoneBlack开发的乐趣:让低成本开发更容易,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发板很酷, BeagleBone®Black(BBB)是最有趣的开发板之一。这种广泛使用的微型电路板价格约为35英镑,启动Linux只需10秒,让任何有兴趣的开发者快速入手。

为此,Imagination公司一直与 BeagleBoard.org®基金会合作,使用户能够从 BBB 中获益。BeagleBone®黑色 (BBB) 板上的主要处理器为Arm®Cortex®A8和PowerVR  SGXTM  530 图形处理单元 (GPU),从教育角度来看,开发者可利用标准 OpenGL® ES 2.0 和 Open CL TM1.1 ABI更好地开发应用程序。

新发布的 OpenCL 库和文档允许 BBB 用于探索 OpenCL。尽管它不是一个高性能的解决方案,但好处是让学生能够以相对较低的成本学习如何在BBB平台上编程。一些应用程序具有宽松的延迟要求和大量的信号处理,这将受益于卸载的A8核。例如,文档包中包含 ALSA 示例率转换器 ,如果延迟放宽,A8 负载将从 55% 降低到 20%。希望通过提供这个库,BeagleBone社区可以找到其他有用的地方来利用OpenCL。

在PowerVR SGX530上运行OpenCL——真的吗?

PowerVR SGX530 是Imagination最成功的 GPU 设计之一,目前仍被广泛使用中。不过,SGX530 是10年前的设计,并在Open CL成为标准前设计的。尽管如此,Imagination还是在PowerVR SGX530上为OpenCL 1.1提供了支持,鉴于BeagleBone Black的广泛使用,我们重新启动了这项工作,并在这里介绍它。

此包中的 SGX530 OpenCL 二进制仍然是一个正在进行的工作,必须注意的是,这些二进制文件尚未完全符合OpenCL 1.1 一致性。我们不应认为 OpenCL 驱动程序是"原样"的,并且有在示例中描述了局限性。

使用OpenGL ES2.0

有一个特定的 BBB 映像 AM3358 Debian 9.12 2020-04-06 4GB SD ImgTec 附带 TI SGX 图形驱动程序和PowerVR  SDK 预装。这是探索开放GL和OpenCL的基础。

BBB 映像下载地址https://debian.beagleboard.org/images/bone-debian-9.12-imgtec-armhf-2020-04-06-4gb.img.xz

PowerVR  SDK 提供了一些示例,从将三角形绘制为最基本的图形元素(图 1)开始,直至使用顶点和片段着色器来生成更复杂的图像(图 2)。这可用于自学。或者,BBB 也可以用作移动图形入门课程的开发平台。

图1:基本三角形

图2:添加顶点和片段着色器

理解OpenCL1.1

OpenCL软件包可以在Imagination Technology 大学项目网站(https://university.imgtec.com/)下载。此软件包包含一个构建脚本,该脚本将安装OpenCL 库并修补 PowerVR  SDK,仅允许为 BBB 构建 OpenCL 1.1 矩阵示例。

OpenCL 矩阵乘法示例用于教育目的,以了解OpenCL如何在嵌入式平台(如BBB)上运行。要理解的关键点是,在Arm A8和PowerVR SGX530之间传递数据缓冲区以及管理它们之间的数据缓存一致性所隐含的开销。在这段开销时间内,没有有用的处理工作完成,因此可以认为是“浪费”时间。与开销相比,图 3 中显示的处理时间非常大,例如,当 A8在 SGX 处理时释放以执行其他任务时,BBB 上的 OpenCL 变得非常有用。

图3:OpenCL开销和处理时间

使用多个 OpenCL 核来说明如何使用float4 类型(四包 32 位数据值包)上的单指令多重数据 (SIMD) 指令来提高SGX的处理性能。

必须指出,如果目标是 BBB 上最快的处理时间,那么最佳解决方案是使用 Arm® NEONTM内部指令,因为不涉及开销。

使用OpenCL 1.1

矩阵乘法示例有助于理解 OpenCL。下一步是在一个真实的示例中使用OpenCL,该示例具有高处理和宽松延迟的正确组合。所选示例是音频播放器应用程序中使用的 ALSA 采样率转换器(SRC)。高处理要求来自 44.1kHz 到48kHz 的上采样,事实上,它是一个播放器,这意味着延迟要求可以放宽。OpenCL 实现适合 ALSA 软件,如图 4 所示,修改libspeexdsp层以调用OpenCL。

图 4:ALSA 软件架构与 libspeexdsp 修改为调用 OpenCL

这个例子是通过运行一个脚本来构建的,这个脚本将下载并修补ALSA包。OpenCL 库是作为C++库提供,因此 ALSA 需要与 g++编译,以确保 OpenCL构造函数/析构函数被正确调用。g++编译器比 GCC 更严格,因此大多数补丁都是为了纠正指针上的类型转换,确保初始化的结构完全初始化,并顺序正确。

要利用 OpenCL,所使用的算法必须完全并行,每个输出样本都执行相同的操作。libspeexdsp中的SRC 算法实际上并没有做到这一点,因为内循环计算的索引值将用于外循环的下一次迭代。这意味着需要对ALSA-SRC算法进行重新分解,以便可以将索引计算步骤从处理循环中析构出并优先实现,从而使处理循环在每次迭代中都是相同的。

由于aplay只是一个回放应用程序,因此可以放宽延迟要求。结果证明这是必要的,因为处理160个样本的标准输入音频缓冲区大小的开销阻止了OpenCL调用的实时执行。缓冲尺寸为 640 个或更多样本,实现了可靠的操作。通过 1600 个样本缓冲区,在A8上运行SRC时的A8负载从55%降低到20%。此 CPU 卸载是在 BBB 上使用 OpenCL 的主要优势,我们希望社区能够找到其他能够提高基于 BBB 系统的性能的使用案例。

OpenCL下载包中的文档更加详细,以帮助读者了解 OpenCL 操作并能够有效地使用它。

英文链接:https://www.imaginationtech.com/blog/fun-with-powervr-and-the-beaglebone-black-low-cost-development-made-easy/

声明:本文为原创文章,转载需注明作者、出处及原文链接。

欢迎加入Imagination GPU与人工智能交流群

群已满200人,入群请加小编拉进群,

小编微信号:eetrend89(添加请备注IMG)

推荐阅读

Imagination、北大顶级联合 《移动图形概论》课程强势登陆学堂在线

END

Imagination Technologies是一家总部位于英国的公司,致力于研发芯片和软件知识产权(IP),基于Imagination IP的产品已在全球数十亿人的电话、汽车、家庭和工作场所中使用。获取更多物联网、智能穿戴、通信、汽车电子、图形图像开发等前沿技术信息,欢迎关注 Imagination Tech !

长按识别二维码


关注我们

这篇关于PowerVR与BeagleBoneBlack开发的乐趣:让低成本开发更容易的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167701

相关文章

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并