当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]用OpenCL开发嵌入式混合代码

近几年来,处理器从最求高性能转向追求多内核。这种改变主要是由于量子效应(quantum effects)的作用难以实现高性能和低功耗的兼得,因而需要加速开发新的软件技术。这些技术属于通用运算块,不但可应用于异构多核CPU,还可以应用于图形加速器、数字信号处理器(DSP)以及现场可编程门阵列(FPGA),以加速算法,应对日益提高的运算性能要求。

OpenCL由苹果公司提议开发,得到Khronos Group的维护,其开发目的是提供便携式开放编程架构,这使得软件可并行利用多核CPU和专用处理内核,特别是图形处理器可实现并行处理非图形处理。

OpenCL与OpenGL类似,也就是都可实现利用不可知设备开放标准以创建自定义实现。在设计上OpenCL可与OpenGL一同工作,也就是可共享架构数据,使用OpenCL完成的数据,接着可使用OpenGL显示。OpenCL标准由2008年成立的工作组开发,Nvidia主持工作,Apple参与编辑。从那以后,OpenCL标准向后兼容的修订版本经过一系列可用于验证一致性的一致性测试完成发布。

OpenCL对现有处理器的一致性实现主要适用于芯片供应商(Altera, AMD, ARM, Freescale, Imagination Technologies, Intel, Nvidia, 德州仪器,赛灵思等)。 为加速运行OpenCL架构,需要使用针对这些供应商的OpenCL驱动器。

OpenCL与Nvidia的CUDA,Stanford的Brookand和微软DirectCompute类似。 与这些语言相比,OpenCL具有开放、便携、低端、与硬件较适应的特点,但在一定程度上较难使用。这主要是因为OpenCL用于支持异构内核并行处理的便携式硬件抽象层。

OpenCL还形成基于带有其他功能的C99子集的语言,可支持两种不同的并行处理模式,即任务并行和数据并行。

任务并行是嵌入式模式,最为工程师所熟悉。任务并行一般利用多线程OS实现,以便于不同的线程可同时运行。在线程需要访问共享资源时,可利用互斥器、信号或其他各类的锁定机制。 OpenCL支持这种程序模式,但这并不是其强大功能。

数据并行可应用于使用跨数据集进行同一操作的算法。在数据并行模式中,一种运行如框过滤器具有并行性,这样同一微算法可并行运行多次,但这种算法的各项实例化可在其自身的数据子集上运行——这样实现了数据并行。这是最适于OpenCL支持的程序模式。OpenCL的五种兼容交叉模式有助于解释这些概念。这些模式是架构、平台、执行、内存和程序。

OpenCL架构包括平台层、运行时间和编译器。平台允许主程序查询可用设备,创建前后关系。运行时间允许主程序操纵前后关系。编译器创建可执行程序并基于带有一些其他语言功能的C99子集以支持并行程序。为向芯片供应商提供OpenCL一致性,需要提供启动架构运行的OpenCL驱动器。

通过连接一个或多个器件的主机定义平台,如GPU。各器件被分为一个或多个的运算单元,如内核。各运算单元被分为一个或多个处理元件。

OpenCL程序执行发生在两处:在器件上执行的内核,最常见的是GPU,以及在主机器件上执行的主机程序,最常见的是CPU。

要了解执行模式,最好先了解内核如何运行。主机计划执行内核时,需要定义索引空间。内核实例(工作项)执行这个索引空间的各个项目。

在OpenCL中,索引空间被表示为NDRange。NDRange是一维、二维、或三维索引空间。NDRange的图形表示如图1。主机定义内核使用的前后关系。前后关系包括器件表、内核、源代码和内存对象。通过主机产生和维护前后关系。另外,主机利用叫作命令队列的OpenCL API创建数据结构。主机通过命令队列安排内核在器件上运行。


图 1 NDRange的图形表示

可在命令队列上放置的命令包括内核执行命令、内存管理命令和同步命令。同步命令用于限制其他命令的执行顺序。通过在OpenCL命令队列放置命令,运行时间可在系统内处理在器件并行完成的命令。

执行内核的工作项目可访问下列内存:

• 全局内存——适用于所有工作组的所有工作项目。
• 常量内存——由主机初始化,在整个内核寿命中内存保持为常量。
• 本地内存——由工作组共享的内存。
• 私有内存——单个工作项目私有的内存。

正如上文所述,OpenCL主要支持两种程序模式:数据并行,即各处理器在分布式数据的不同条目上执行同一任务;任务并行,即在共同的数据集上执行多个任务。在各类并行程序中,运行中并行线程同步被视为首选。OpenCL为并行处理间的同步控制提供三种方式。第一种方式是在索引空间内创建以限制某个工作项目以便使工作项目按顺序运行。第二种方式是在命令队列内建障碍以限制命令顺序。第三种方式是在命令队列内创建由命令生成的事件。这些事件的运行可强制顺序操作。

例如使用工具OpenCL特别适用于图像/视频编辑应用程序, AI 系统,模型架构,游戏物理,电影渲染,和增强现实。但主要在嵌入式移动器件中还设置了为OpenCL标准定义的嵌入式配置文件,包括整个OpenCL标准的子集。OpenCL嵌入式配置文件包括以下几个亮点:

• 64位整数(可选)
3D图形支持(可选)
• 为浮点计算放宽估算规则
• 提高嵌入式器件转换的准确度
• 内置原子函数(可选)

展望未来,OpenCL路线图包括几项计划,以提高OpenCL至下一个相关程度。
高级模式(OpenCL-HLM):OpenCL目前正探索通过语言构件整合器件和主机执行环境,以便提高OpenCL的易用性。如果实现这项计划,OpenCL的应用将更加广泛。

长期重要路线图:OpenCL正不断探索加强内存和执行模式的方式,以利用不断更新的硬件功能。另外,OpenCL正不断努力利用经优化的同步工具,使并行程序模式在 OpenCL 运行得更加强健。
WebCL: OpenCL的愿景是通过Java脚本绑定件进行并行运算。

标准并行中间表示(OpenCL-SPIR):OpenCL计划摆脱创建编译器和语言绑定件的业务。创建标准化中间表示,可通过不属于OpenCL内核团队的工程师将OpenCL绑定至新语言,这样可扩大OpenCL的应用范围,并使得OpenCL中间表示成为现在乃至未来编译器的目标。

OpenCL前景光明,但仍面临着许多问题亟待解决,工作组的当前计划已经解决了其中的很多问题。在下一个运算阶段,我们预测处理内核将会剧增,包括异构CPU和异构CPU/GPU,我们仍将需要成熟软件架构,这有助于使我们利用所有硬件运算功能,将其应用于我们的系统。在这种大趋势下,OpenCL被坚持定位为开放、自由、成熟的标准,得到行业支持,并将拥有光明的未来。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2024年5月16日 /美通社/ -- 5月10日晚,2024中国品牌日晚会在新华社全媒体矩阵播出,50个入选品牌在当晚揭晓,极氪名列其中,成为首度上榜的中国造车新势力代表。 图为北京时间5月10日 21:30 ,...

关键字: 吉利 COM HTML 代码

加利福尼亚州圣克拉拉市—2024年4月30日―AMD(NASDAQ: AMD)今日公布2024年第一季度营业额达55亿美元,毛利率为47%,经营收入3600万美元,净收入1.23亿美元,摊薄后每股收益为0.07美元。基于...

关键字: 嵌入式 PC 人工智能

这款全新的中端MCU系列为设计人员提供了更高水平的安全性和灵活性

关键字: 嵌入式 单片机

2024年4月11日,中国——意法半导体的ST25R100近距离通信(NFC)读取器芯片独步业界,集先进的技术功能、稳定可靠的通信连接和低廉的成本价格于一身,在大规模制造的消费电子和工控设备内,可以提高非接触式互动功能的...

关键字: 嵌入式 数据读取器 芯片

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

深圳2024年4月23日 /美通社/ -- 全球AI解决方案与工业级存储领导品牌宜鼎国际 (Innodisk)持续深化边缘AI布局,今(23)日发表全球首创"MIPI over Type-C"独家技术,让旗下嵌入式相机模...

关键字: AI 嵌入式 相机

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术

机器人操作系统(ROS)驱动程序基于ADI产品而开发,因此可直接在ROS生态系统中使用这些产品。本文将概述如何在应用、产品和系统(例如,自主导航、安全气泡地图和数据收集机器人)中使用和集成这些驱动程序;以及这样将如何有助...

关键字: 电机控制器 机器人 嵌入式
关闭
关闭