0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于RZ/G2L OpenCL應(yīng)用運(yùn)行方法介紹

瑞薩MCU小百科 ? 來源:瑞薩嵌入式小百科 ? 2024-02-19 12:16 ? 次閱讀

關(guān)于OpenCL

OpenCL是Open Computing Language的簡(jiǎn)寫,目前已經(jīng)形成了標(biāo)準(zhǔn),是跨平臺(tái)的,通常由圖形處理器GPU)提供硬件層面支持。OpenCL的設(shè)計(jì)目的,主要是為了將GPU強(qiáng)大的浮點(diǎn)和并行運(yùn)算能力,以及能與CPU協(xié)作的能力,從軟件層面開放給用戶使用。用法跟OpenGL類似。

通常情況下,對(duì)同一組數(shù)據(jù)進(jìn)行并行運(yùn)算,使用OpenCL比執(zhí)行普通CPU端程序,要快很多倍。

站在應(yīng)用軟件的角度,OpenCL簡(jiǎn)單來說,就是一組API函數(shù)名稱操作系統(tǒng)通常會(huì)提供具體實(shí)現(xiàn)庫(kù),以及運(yùn)行于GPU之上的程序(OpenCL中稱為kernel),文件后綴通常為.cl,基于OpenCL語法編寫的程序,由CPU加載編譯后,傳輸?shù)絆penCL設(shè)備的內(nèi)存供GPU執(zhí)行。各個(gè)圖形處理器廠商,針對(duì)自己的具體芯片,在GPU驅(qū)動(dòng)程序中適配這些API,用戶就可以基于這些標(biāo)準(zhǔn)的API進(jìn)行相關(guān)的OpenCL應(yīng)用程序開發(fā)。

需要指出的是:跟OpenGL的shader程序類似,OpenCL的kernel程序也是具體GPU芯片相關(guān)的,不能跨GPU型號(hào)使用。同一段代碼,可能換了GPU型號(hào)之后就不能編譯通過,第一個(gè)GPU使用的二進(jìn)制kernel程序,不應(yīng)該直接加載到第二個(gè)不同型號(hào)GPU上面使用。

OpenCL應(yīng)用運(yùn)行框圖

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

OpenCL設(shè)備內(nèi)部,通常會(huì)有大量的并行計(jì)算單元(上圖中的CU),每個(gè)計(jì)算單元內(nèi)部又包含有若干個(gè)處理單元(圖中的PE),PE可以同時(shí)并行地執(zhí)行相同OpenCL代碼,從而實(shí)現(xiàn)高性能并行運(yùn)算,具體CU以及PE數(shù)量已經(jīng)運(yùn)算性能,跟具體GPU廠商的具體GPU型號(hào)有關(guān)。

OpenCL代碼被CPU加載到設(shè)備內(nèi)存之后,CPU通過相應(yīng)的OpenCL API來啟動(dòng)OpenCL設(shè)備的運(yùn)行,同時(shí)還能查詢執(zhí)行狀態(tài),實(shí)現(xiàn)CPU-GPU之間的同步,設(shè)備關(guān)閉等操作。

RZ/G2L上的OpenCL支持

RZ/G2L微處理器配備Cortex-A55(1.2 GHz)CPU、16 位 DDR3L/DDR4接口、帶Arm Mali-G31的3D圖形加速引擎以及視頻編解碼器(H.264),如下圖紅色框所示。此外,這款微處理器還配備有大量接口,如攝像頭輸入、顯示輸出、USB 2.0和千兆以太網(wǎng),因此特別適用于入門級(jí)工業(yè)人機(jī)界面(HMI)和具有視頻功能的嵌入式設(shè)備等應(yīng)用。

此GPU支持2D/3D圖形,以及通用GPU運(yùn)算(GPGPU)。具體支持如下標(biāo)準(zhǔn)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開發(fā)環(huán)境里面有提供Linux版OpenCL Library(需要從官網(wǎng)另外下載)以及對(duì)應(yīng)頭文件。

RZ/G2L的OpenCL庫(kù)支持3種運(yùn)行模式:

● CPU Mode:并行運(yùn)算在CPU端完成,應(yīng)用程序仍然需要調(diào)用OpenCL庫(kù)API,OpenCL庫(kù)內(nèi)部會(huì)基于ARMv8 NEON SIMD指令集做針對(duì)性優(yōu)化。

● GPU Mode:并行運(yùn)行在GPU端完成,驅(qū)動(dòng)程序會(huì)充分利用OpenCL設(shè)備的PE單元,提示并行性和運(yùn)算效率。

● BOTH Mode:上面兩種模式的結(jié)合。

通常情況下,BOTH Mode能提供最佳性能,典型做法是將待處理的并行數(shù)據(jù),平均分成連續(xù)的兩部分,CPU和GPU各自處理一半的數(shù)據(jù)(BOTH模式)。結(jié)合CPU模式,是因?yàn)镃PU端有高主頻,大Cache,高DDR帶寬等優(yōu)勢(shì)。由于GPU端PE的特殊性,對(duì)待處理的數(shù)據(jù),要求是,所有輸入數(shù)據(jù)運(yùn)算方法相同,沒有依賴性,比如:兩組輸入數(shù)組A[1024]和B[1024]分別存放有1024字節(jié)的float類型數(shù)據(jù),將A和B同序號(hào)的數(shù)據(jù)分別做乘法,結(jié)果保存于浮點(diǎn)數(shù)組C[1024],即:

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

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

… …

因?yàn)樗蠵E只能并行執(zhí)行相同的kernel程序。

OpenCL庫(kù)的使用,主要分為如下步驟:

●獲取平臺(tái)信息

●獲取設(shè)備信息

●創(chuàng)建上下文

●創(chuàng)建命令隊(duì)列

●創(chuàng)建和編譯kernel程序

●創(chuàng)建kernel對(duì)象

●創(chuàng)建內(nèi)存對(duì)象

●設(shè)置kernel參數(shù)

●執(zhí)行kernel程序

●同步操作

●獲取處理結(jié)果

●清理資源

部分OpenCL API介紹

OpenCL API通常以 cl_ 開頭,很容易識(shí)別。

獲取平臺(tái)信息

cl_int clGetPlatformIDs(cl_uint num_entries,

cl_platform_id *platforms,

cl_uint *num_platforms);

這個(gè)函數(shù)是OpenCL應(yīng)用程序必須調(diào)用的第一個(gè)API,用來獲取可使用的Platform ID數(shù)組,當(dāng)平臺(tái)數(shù)未知時(shí),第一次調(diào)用clGetPlatformIDs函數(shù)獲取平臺(tái)數(shù)量,第二次調(diào)用clGetPlatformIDs函數(shù)獲取平臺(tái)對(duì)象,供后續(xù)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信息、版本、平臺(tái)制造商、支持的擴(kuò)展等。

獲取設(shè)備信息

cl_int clGetDeviceIDs(cl_platform_id_platform,

cl_device_type device_type,

cl_uint num_entries,

cl_device_id *devices,

cl_uint *num_devices);

這個(gè)API用來獲取平臺(tái)可使用的設(shè)備對(duì)象數(shù)組。可用于獲取CPU/GPU/專用加速器等OpenCL設(shè)備數(shù)量等。

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);

用于獲取選定設(shè)備相關(guān)信息,如并行計(jì)算單元最大數(shù)量、設(shè)備端全局內(nèi)存大小等信息。

由于OpenCL API涉及的內(nèi)容比較多,另一方面,OpenCL相關(guān)標(biāo)準(zhǔn)已經(jīng)很成熟,網(wǎng)上有很多的示例資源可供參考,瑞薩也可以提供MPU上的OpenCL例子給到客戶,剩下的OpenCL應(yīng)用程序步驟相關(guān)API,就不進(jìn)一步介紹了。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2212

    瀏覽量

    81977
  • 圖形處理器
    +關(guān)注

    關(guān)注

    0

    文章

    193

    瀏覽量

    25374
  • 視頻編解碼器
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    11559
  • OpenCL
    +關(guān)注

    關(guān)注

    2

    文章

    48

    瀏覽量

    33205
  • GPU芯片
    +關(guān)注

    關(guān)注

    1

    文章

    303

    瀏覽量

    5747

原文標(biāo)題:RZ/G2L OpenCL使用介紹

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RZ/G2L Linux系統(tǒng)如何添加新的內(nèi)核模塊

    RZ/G2L Linux系統(tǒng)的鏡像基于yocto構(gòu)建,本篇介紹如何添加新的內(nèi)核模塊。
    的頭像 發(fā)表于 01-04 12:19 ?1499次閱讀
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b> Linux系統(tǒng)如何添加新的內(nèi)核模塊

    瑞薩RZ/G2L串口SCI的使用(上)

    瑞薩RZ/G2L的串口簡(jiǎn)稱SCI,全稱Serial Communication Interface。
    的頭像 發(fā)表于 01-17 12:19 ?1214次閱讀
    瑞薩<b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>串口SCI的使用(上)

    【飛凌RZ/G2L開發(fā)板試用體驗(yàn)】+01.開箱(zmj)

    【飛凌RZ/G2L開發(fā)板試用體驗(yàn)】+01.開箱(zmj)感謝飛凌嵌入式和電子發(fā)燒友網(wǎng)提供的此次試用機(jī)會(huì),可以親身體驗(yàn)飛凌RZ/G2L開發(fā)板的魅力。前言:具備視頻處理功能的嵌入式電子設(shè)備
    發(fā)表于 08-28 19:13

    瑞薩G2L系列核心板-RZ/G2L處理器簡(jiǎn)介

    RZ/G2L是瑞薩在智能工控領(lǐng)域的一款高性能、超高效處理器。RZ/G2L采用Arm Cortex-A55內(nèi)核,運(yùn)行頻率高達(dá)1.2GHz,內(nèi)部
    發(fā)表于 06-09 11:54 ?867次閱讀

    RZ/G2LRZ/V2L SMARC 模塊板用戶手冊(cè):硬件

    RZ/G2L、RZ/V2L SMARC 模塊板用戶手冊(cè):硬件
    發(fā)表于 01-09 19:00 ?4次下載
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>、<b class='flag-5'>RZ</b>/V<b class='flag-5'>2L</b> SMARC 模塊板用戶手冊(cè):硬件

    RZ/G2L、RZ/G2LC 用戶手冊(cè)概述

    RZ/G2L、RZ/G2LC 用戶手冊(cè)概述
    發(fā)表于 01-10 19:04 ?6次下載
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>、<b class='flag-5'>RZ</b>/<b class='flag-5'>G2</b>LC 用戶手冊(cè)概述

    米爾瑞薩RZ/G2L開發(fā)板-初體驗(yàn)

    介紹米爾RZ/G2L開發(fā)板
    的頭像 發(fā)表于 05-15 09:10 ?892次閱讀
    米爾瑞薩<b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>開發(fā)板-初體驗(yàn)

    RZ G2L核心板以太網(wǎng)接口性能測(cè)試

    武漢萬象奧科RZ/G2L核心板支持2路千兆以太網(wǎng)接口,評(píng)估測(cè)試RZ/G2L雙網(wǎng)口實(shí)際傳輸速率。
    的頭像 發(fā)表于 03-11 09:47 ?882次閱讀
    <b class='flag-5'>RZ</b> <b class='flag-5'>G2L</b>核心板以太網(wǎng)接口性能測(cè)試

    RZ/G2L、RZ/V2L SMARC 模塊板用戶手冊(cè):硬件

    RZ/G2L、RZ/V2L SMARC 模塊板用戶手冊(cè):硬件
    發(fā)表于 06-30 18:38 ?1次下載
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>、<b class='flag-5'>RZ</b>/V<b class='flag-5'>2L</b> SMARC 模塊板用戶手冊(cè):硬件

    RZ/G2L、RZ/G2LC 用戶手冊(cè)概述

    RZ/G2L、RZ/G2LC 用戶手冊(cè)概述
    發(fā)表于 06-30 19:47 ?6次下載
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>、<b class='flag-5'>RZ</b>/<b class='flag-5'>G2</b>LC 用戶手冊(cè)概述

    RZ/G2L核心板e(cuò)MMC測(cè)試

    武漢萬象奧科RZ/G2L核心板支持eMMC存儲(chǔ),可選8GB~64GB。 評(píng)估測(cè)試RZ/G2L核心板存儲(chǔ)在默認(rèn)8GB配置下eMMC性能(讀寫速率)。
    的頭像 發(fā)表于 03-02 17:18 ?2117次閱讀
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>核心板e(cuò)MMC測(cè)試

    RZ/G2L開發(fā)板使用指南(上)

    如果需要評(píng)估RZ/G2L產(chǎn)品的各項(xiàng)功能,RZ/G2L評(píng)估板是最合適的平臺(tái)。
    的頭像 發(fā)表于 11-03 12:19 ?882次閱讀
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>開發(fā)板使用指南(上)

    RZ/G2L RZ/G2LC RZ/G2UL RZ/G3S靈活軟件包應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《RZ/G2L RZ/G2LC RZ/G2UL
    發(fā)表于 01-14 10:46 ?1次下載
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b> <b class='flag-5'>RZ</b>/<b class='flag-5'>G2</b>LC <b class='flag-5'>RZ</b>/<b class='flag-5'>G2</b>UL <b class='flag-5'>RZ</b>/<b class='flag-5'>G</b>3S靈活軟件包應(yīng)用說明

    RZ/G2L串口SCI的使用(上)

    RZ/G2L串口SCI的使用
    的頭像 發(fā)表于 07-25 08:06 ?329次閱讀
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>串口SCI的使用(上)

    RZ/G2L串口SCI的使用(下)

    RZ/G2L串口SCI的使用
    的頭像 發(fā)表于 08-03 08:06 ?340次閱讀
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>串口SCI的使用(下)