0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于RZ/G2L OpenCL应用运行方法介绍

瑞萨MCU小百科 来源:瑞萨嵌入式小百科 2024-02-19 12:16 次阅读

关于OpenCL

OpenCL是Open Computing Language的简写,目前已经形成了标准,是跨平台的,通常由图形处理器GPU)提供硬件层面支持。OpenCL的设计目的,主要是为了将GPU强大的浮点和并行运算能力,以及能与CPU协作的能力,从软件层面开放给用户使用。用法跟OpenGL类似。

通常情况下,对同一组数据进行并行运算,使用OpenCL比执行普通CPU端程序,要快很多倍。

站在应用软件的角度,OpenCL简单来说,就是一组API函数名称操作系统通常会提供具体实现库,以及运行于GPU之上的程序(OpenCL中称为kernel),文件后缀通常为.cl,基于OpenCL语法编写的程序,由CPU加载编译后,传输到OpenCL设备的内存供GPU执行。各个图形处理器厂商,针对自己的具体芯片,在GPU驱动程序中适配这些API,用户就可以基于这些标准的API进行相关的OpenCL应用程序开发。

需要指出的是:跟OpenGL的shader程序类似,OpenCL的kernel程序也是具体GPU芯片相关的,不能跨GPU型号使用。同一段代码,可能换了GPU型号之后就不能编译通过,第一个GPU使用的二进制kernel程序,不应该直接加载到第二个不同型号GPU上面使用。

OpenCL应用运行框图

5e317f46-cedc-11ee-a297-92fbcf53809c.png

OpenCL设备内部,通常会有大量的并行计算单元(上图中的CU),每个计算单元内部又包含有若干个处理单元(图中的PE),PE可以同时并行地执行相同OpenCL代码,从而实现高性能并行运算,具体CU以及PE数量已经运算性能,跟具体GPU厂商的具体GPU型号有关。

OpenCL代码被CPU加载到设备内存之后,CPU通过相应的OpenCL API来启动OpenCL设备的运行,同时还能查询执行状态,实现CPU-GPU之间的同步,设备关闭等操作。

RZ/G2L上的OpenCL支持

RZ/G2L微处理器配备Cortex-A55(1.2 GHz)CPU、16 位 DDR3L/DDR4接口、带Arm Mali-G31的3D图形加速引擎以及视频编解码器(H.264),如下图红色框所示。此外,这款微处理器还配备有大量接口,如摄像头输入、显示输出、USB 2.0和千兆以太网,因此特别适用于入门级工业人机界面(HMI)和具有视频功能的嵌入式设备等应用。

此GPU支持2D/3D图形,以及通用GPU运算(GPGPU)。具体支持如下标准API:

● OpenCL 2.0 Full Profile

●OpenGL ES 1.1 2.0 3.0 3.1 and 3.2

5e4061dc-cedc-11ee-a297-92fbcf53809c.png

RZ/G2L上的OpenCL Library及其使用

RZ/G2L的VLP开发环境里面有提供Linux版OpenCL Library(需要从官网另外下载)以及对应头文件。

RZ/G2L的OpenCL库支持3种运行模式:

● CPU Mode:并行运算在CPU端完成,应用程序仍然需要调用OpenCL库API,OpenCL库内部会基于ARMv8 NEON SIMD指令集做针对性优化。

● GPU Mode:并行运行在GPU端完成,驱动程序会充分利用OpenCL设备的PE单元,提示并行性和运算效率。

● BOTH Mode:上面两种模式的结合。

通常情况下,BOTH Mode能提供最佳性能,典型做法是将待处理的并行数据,平均分成连续的两部分,CPU和GPU各自处理一半的数据(BOTH模式)。结合CPU模式,是因为CPU端有高主频,大Cache,高DDR带宽等优势。由于GPU端PE的特殊性,对待处理的数据,要求是,所有输入数据运算方法相同,没有依赖性,比如:两组输入数组A[1024]和B[1024]分别存放有1024字节的float类型数据,将A和B同序号的数据分别做乘法,结果保存于浮点数组C[1024],即:

C[0] = A[0] * B[0];

C[1] = A[1] * B[1];

… …

因为所有PE只能并行执行相同的kernel程序。

OpenCL库的使用,主要分为如下步骤:

●获取平台信息

●获取设备信息

●创建上下文

●创建命令队列

●创建和编译kernel程序

●创建kernel对象

●创建内存对象

●设置kernel参数

●执行kernel程序

●同步操作

●获取处理结果

●清理资源

部分OpenCL API介绍

OpenCL API通常以 cl_ 开头,很容易识别。

获取平台信息

cl_int clGetPlatformIDs(cl_uint num_entries,

cl_platform_id *platforms,

cl_uint *num_platforms);

这个函数是OpenCL应用程序必须调用的第一个API,用来获取可使用的Platform ID数组,当平台数未知时,第一次调用clGetPlatformIDs函数获取平台数量,第二次调用clGetPlatformIDs函数获取平台对象,供后续API使用。

cl_int clGetPlatformInfo(cl_platform_id platform,

cl_platform_info param_name,

size_t param_value_size,

void *param_value,

size_t *param_value_size_ret);

用于获取OpenCL的Profile信息、版本、平台制造商、支持的扩展等。

获取设备信息

cl_int clGetDeviceIDs(cl_platform_id_platform,

cl_device_type device_type,

cl_uint num_entries,

cl_device_id *devices,

cl_uint *num_devices);

这个API用来获取平台可使用的设备对象数组。可用于获取CPU/GPU/专用加速器等OpenCL设备数量等。

cl_int clGetDeviceInfo(cl_device_id device,

cl_device_info param_name,

size_t param_value_size,

void *param_value,

size_t *param_value_size_ret);

用于获取选定设备相关信息,如并行计算单元最大数量、设备端全局内存大小等信息。

由于OpenCL API涉及的内容比较多,另一方面,OpenCL相关标准已经很成熟,网上有很多的示例资源可供参考,瑞萨也可以提供MPU上的OpenCL例子给到客户,剩下的OpenCL应用程序步骤相关API,就不进一步介绍了。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微处理器
    +关注

    关注

    11

    文章

    2131

    浏览量

    81411
  • 图形处理器
    +关注

    关注

    0

    文章

    185

    浏览量

    24899
  • 视频编解码器

    关注

    0

    文章

    18

    浏览量

    11491
  • OpenCL
    +关注

    关注

    2

    文章

    47

    浏览量

    33126
  • GPU芯片
    +关注

    关注

    1

    文章

    289

    浏览量

    5688

原文标题:RZ/G2L OpenCL使用介绍

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    飞凌嵌入式之瑞萨G2L核心板及开发板开箱体验

    一、FET-G2LD-C核心板体验先介绍下核心板的基础配置:CPU:RZ/G2L双核Arm® Cortex®-A55 @ 1.2GHz单核Arm® Cortex®-M33 @ 200M
    发表于 06-08 15:20

    G2L系列 核心板 -RZ/G2L 处理器简介|框架图|功耗|原理图及硬件设计指南

    RZ/G2L是瑞萨在智能工控领域的一款高性能、超高效处理器。RZ/G2L采用Arm Cortex-A55内核,运行频率高达1.2GHz,内部
    发表于 06-21 14:45

    【飞凌RZ/G2L开发板试用体验】开箱帖子,飞凌质量YYDS

    ,品质指的信赖。飞凌RZ/G2L开发板基于瑞萨RZ/G2L,在智能工控领域的一款高性能、超高效处理器。RZ/
    发表于 08-15 18:46

    【飞凌RZ/G2L开发板试用体验】+01.开箱(zmj)

    【飞凌RZ/G2L开发板试用体验】+01.开箱(zmj)感谢飞凌嵌入式和电子发烧友网提供的此次试用机会,可以亲身体验飞凌RZ/G2L开发板的魅力。前言:具备视频处理功能的嵌入式电子设备
    发表于 08-28 19:13

    【飞凌RZ/G2L开发板试用体验】+04.RZ/V2L开发板的温度测试(zmj)

    【飞凌RZ/G2L开发板试用体验】+04.RZ/V2L开发板的温度测试(zmj)飞凌RZ/V2L
    发表于 08-28 21:52

    【飞凌RZ/G2L开发板】飞凌RZ/G2L开发板试用测评报告

    开发板带的资料,关于RZ/G2L芯片主要介绍如下:瑞萨RZ/G2L处理器搭载双核Cortex-A
    发表于 08-29 02:01

    【飞凌RZ/G2L开发板试用体验】+05.RZ/V2L开发板的性能读写测试(zmj)

    /G2L)是瑞萨在智能工控领域的一款高性能、超高效处理器。 RZ/G2L采用Arm Cortex-A55内核,运行频率高达1.2GHz, 内部集成Arm Cortex-M33@200M
    发表于 09-06 19:50

    【飞凌RZ/G2L开发板试用体验】+07.RZ/V2L开发板的Camera测试(zmj)

    本帖最后由 卿小小_9e6 于 2022-9-6 20:11 编辑 【飞凌RZ/G2L开发板试用体验】+07.RZ/V2L开发板的Camera测试(zmj)飞凌
    发表于 09-06 20:10

    【飞凌RZ/G2L开发板试用体验】+08.RZ/V2L开发板的QT测试(zmj)

    【飞凌RZ/G2L开发板试用体验】+08.RZ/V2L开发板的QT测试(zmj)Qt-Creator 是一个跨平台的 QT 集成开发环境(IDE),包括了高级 C++代码编辑器、项目和
    发表于 09-06 20:17

    【米尔瑞萨RZ/G2L开发板-试用体验】开箱

    感谢 感谢电子发烧友论坛、感谢米尔电子,把米尔瑞萨RZ/G2L开发板试用话动的机会给了我。虽然周五就收到了开发板,但是由于复阳了,为了能及时的完成试用活动,所以今天努力的爬起来完成开箱报告。 开箱
    发表于 05-14 19:41

    【米尔瑞萨RZ/G2L开发板-试用体验】开箱 + 开机

    感谢 感谢电子发烧友论坛、感谢米尔电子,把米尔瑞萨RZ/G2L开发板试用话动的机会给了我。最近事情比较多,赶在这个空挡时间完成开箱报告。 开箱 第一次拿到米尔电子的试用机会,简约的包装盒透着电子行业
    发表于 05-18 19:33

    【米尔瑞萨RZ/G2L开发板-试用体验】米尔瑞萨RZ/G2L开发板开箱视频

    今天刚刚收到米尔瑞萨RZ/G2L开发板,拆开包裹后给人的感觉是惊艳,板卡设计真的很棒,来看看视频做个简单了解吧。 更多板卡可以登录官网了解哦。https://www.myir.cn/
    发表于 05-22 21:58

    150套开发板免费送!还有5G手机拿?米尔RZ/G2L开发板创意秀

    150套开发板支持开发者创新开发,开发者只需要提供项目需求申请即有机会获得RZ/G2L开发板。 获得开发板后提供项目介绍、板卡测试、板卡应用文档/视频等,参与作品评选,还有机会获得米尔提供的大奖
    发表于 05-24 16:36

    【米尔瑞萨RZ/G2L开发板-试用体验】米尔瑞萨RZ/G2L开发板使用SSH登录

    收到的米尔瑞萨RZ/G2L开发板上电测试一下SSH登录方式和其它测试! SSH登录 在使用之前,需要事先连接网络,笔者这里使用的是以太网,事先需要使用串口的登录,然后输入以下命令查看IP地址
    发表于 06-11 21:47

    【米尔瑞萨RZ/G2L开发板-试用体验】认识一下米尔瑞萨RZ/G2L开发板的核心板

    收到米尔瑞萨RZ/G2L开发板后一直对米尔旗下开发板的做工感到非常精致,同时也有着很强大的功能,也一直很喜欢米尔系列开发板。 引领工业市场从32位MPU向64位演进 基于瑞萨高性价比RZ/G2
    发表于 07-29 00:21