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

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

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

如何使用OpenCL架構(gòu)工具實(shí)現(xiàn)嵌入式任務(wù)并行模式的開發(fā)

電子設(shè)計(jì) ? 來源:電子工程網(wǎng) ? 作者:MARK BENSON ? 2020-10-13 10:39 ? 次閱讀

近幾年來,處理器從最求高性能轉(zhuǎn)向追求多內(nèi)核。這種改變主要是由于量子效應(yīng)(quantum effects)的作用難以實(shí)現(xiàn)高性能和低功耗的兼得,因而需要加速開發(fā)新的軟件技術(shù)。這些技術(shù)屬于通用運(yùn)算塊,不但可應(yīng)用于異構(gòu)多核CPU,還可以應(yīng)用于圖形加速器、數(shù)字信號處理器(DSP)以及現(xiàn)場可編程門陣列(FPGA),以加速算法,應(yīng)對日益提高的運(yùn)算性能要求。

OpenCL由蘋果公司提議開發(fā),得到Khronos Group的維護(hù),其開發(fā)目的是提供便攜式開放編程架構(gòu),這使得軟件可并行利用多核CPU和專用處理內(nèi)核,特別是圖形處理器可實(shí)現(xiàn)并行處理非圖形處理。

OpenCL與OpenGL類似,也就是都可實(shí)現(xiàn)利用不可知設(shè)備開放標(biāo)準(zhǔn)以創(chuàng)建自定義實(shí)現(xiàn)。在設(shè)計(jì)上OpenCL可與OpenGL一同工作,也就是可共享架構(gòu)數(shù)據(jù),使用OpenCL完成的數(shù)據(jù),接著可使用OpenGL顯示。OpenCL標(biāo)準(zhǔn)由2008年成立的工作組開發(fā),Nvidia主持工作,Apple參與編輯。從那以后,OpenCL標(biāo)準(zhǔn)向后兼容的修訂版本經(jīng)過一系列可用于驗(yàn)證一致性的一致性測試完成發(fā)布。

OpenCL對現(xiàn)有處理器的一致性實(shí)現(xiàn)主要適用于芯片供應(yīng)商(Altera, AMDARM, Freescale, Imagination Technologies, Intel, Nvidia, 德州儀器,賽靈思等)。 為加速運(yùn)行OpenCL架構(gòu),需要使用針對這些供應(yīng)商的OpenCL驅(qū)動器

OpenCL與Nvidia的CUDA,Stanford的Brookand和微軟DirectCompute類似。 與這些語言相比,OpenCL具有開放、便攜、低端、與硬件較適應(yīng)的特點(diǎn),但在一定程度上較難使用。這主要是因?yàn)镺penCL用于支持異構(gòu)內(nèi)核并行處理的便攜式硬件抽象層。

OpenCL還形成基于帶有其他功能的C99子集的語言,可支持兩種不同的并行處理模式,即任務(wù)并行和數(shù)據(jù)并行。

任務(wù)并行是嵌入式模式,最為工程師所熟悉。任務(wù)并行一般利用多線程OS實(shí)現(xiàn),以便于不同的線程可同時運(yùn)行。在線程需要訪問共享資源時,可利用互斥器、信號或其他各類的鎖定機(jī)制。 OpenCL支持這種程序模式,但這并不是其強(qiáng)大功能。

數(shù)據(jù)并行可應(yīng)用于使用跨數(shù)據(jù)集進(jìn)行同一操作的算法。在數(shù)據(jù)并行模式中,一種運(yùn)行如框過濾器具有并行性,這樣同一微算法可并行運(yùn)行多次,但這種算法的各項(xiàng)實(shí)例化可在其自身的數(shù)據(jù)子集上運(yùn)行——這樣實(shí)現(xiàn)了數(shù)據(jù)并行。這是最適于OpenCL支持的程序模式。OpenCL的五種兼容交叉模式有助于解釋這些概念。這些模式是架構(gòu)、平臺、執(zhí)行、內(nèi)存和程序。

OpenCL架構(gòu)包括平臺層、運(yùn)行時間和編譯器。平臺允許主程序查詢可用設(shè)備,創(chuàng)建前后關(guān)系。運(yùn)行時間允許主程序操縱前后關(guān)系。編譯器創(chuàng)建可執(zhí)行程序并基于帶有一些其他語言功能的C99子集以支持并行程序。為向芯片供應(yīng)商提供OpenCL一致性,需要提供啟動架構(gòu)運(yùn)行的OpenCL驅(qū)動器。

通過連接一個或多個器件的主機(jī)定義平臺,如GPU。各器件被分為一個或多個的運(yùn)算單元,如內(nèi)核。各運(yùn)算單元被分為一個或多個處理元件。

OpenCL程序執(zhí)行發(fā)生在兩處:在器件上執(zhí)行的內(nèi)核,最常見的是GPU,以及在主機(jī)器件上執(zhí)行的主機(jī)程序,最常見的是CPU。

要了解執(zhí)行模式,最好先了解內(nèi)核如何運(yùn)行。主機(jī)計(jì)劃執(zhí)行內(nèi)核時,需要定義索引空間。內(nèi)核實(shí)例(工作項(xiàng))執(zhí)行這個索引空間的各個項(xiàng)目。

在OpenCL中,索引空間被表示為NDRange。NDRange是一維、二維、或三維索引空間。NDRange的圖形表示如圖1。主機(jī)定義內(nèi)核使用的前后關(guān)系。前后關(guān)系包括器件表、內(nèi)核、源代碼和內(nèi)存對象。通過主機(jī)產(chǎn)生和維護(hù)前后關(guān)系。另外,主機(jī)利用叫作命令隊(duì)列的OpenCL API創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。主機(jī)通過命令隊(duì)列安排內(nèi)核在器件上運(yùn)行。

如何使用OpenCL架構(gòu)工具實(shí)現(xiàn)嵌入式任務(wù)并行模式的開發(fā)

圖 1 NDRange的圖形表示

可在命令隊(duì)列上放置的命令包括內(nèi)核執(zhí)行命令、內(nèi)存管理命令和同步命令。同步命令用于限制其他命令的執(zhí)行順序。通過在OpenCL命令隊(duì)列放置命令,運(yùn)行時間可在系統(tǒng)內(nèi)處理在器件并行完成的命令。

執(zhí)行內(nèi)核的工作項(xiàng)目可訪問下列內(nèi)存:

? 全局內(nèi)存——適用于所有工作組的所有工作項(xiàng)目。

? 常量內(nèi)存——由主機(jī)初始化,在整個內(nèi)核壽命中內(nèi)存保持為常量。

? 本地內(nèi)存——由工作組共享的內(nèi)存。

? 私有內(nèi)存——單個工作項(xiàng)目私有的內(nèi)存。

正如上文所述,OpenCL主要支持兩種程序模式:數(shù)據(jù)并行,即各處理器在分布式數(shù)據(jù)的不同條目上執(zhí)行同一任務(wù);任務(wù)并行,即在共同的數(shù)據(jù)集上執(zhí)行多個任務(wù)。在各類并行程序中,運(yùn)行中并行線程同步被視為首選。OpenCL為并行處理間的同步控制提供三種方式。第一種方式是在索引空間內(nèi)創(chuàng)建以限制某個工作項(xiàng)目以便使工作項(xiàng)目按順序運(yùn)行。第二種方式是在命令隊(duì)列內(nèi)建障礙以限制命令順序。第三種方式是在命令隊(duì)列內(nèi)創(chuàng)建由命令生成的事件。這些事件的運(yùn)行可強(qiáng)制順序操作。

例如使用工具OpenCL特別適用于圖像/視頻編輯應(yīng)用程序, AI 系統(tǒng),模型架構(gòu),游戲物理,電影渲染,和增強(qiáng)現(xiàn)實(shí)。但主要在嵌入式移動器件中還設(shè)置了為OpenCL標(biāo)準(zhǔn)定義的嵌入式配置文件,包括整個OpenCL標(biāo)準(zhǔn)的子集。OpenCL嵌入式配置文件包括以下幾個亮點(diǎn):

? 64位整數(shù)(可選)

? 3D圖形支持(可選)

? 為浮點(diǎn)計(jì)算放寬估算規(guī)則

? 提高嵌入式器件轉(zhuǎn)換的準(zhǔn)確度

? 內(nèi)置原子函數(shù)(可選)

展望未來,OpenCL路線圖包括幾項(xiàng)計(jì)劃,以提高OpenCL至下一個相關(guān)程度。

高級模式(OpenCL-HLM):OpenCL目前正探索通過語言構(gòu)件整合器件和主機(jī)執(zhí)行環(huán)境,以便提高OpenCL的易用性。如果實(shí)現(xiàn)這項(xiàng)計(jì)劃,OpenCL的應(yīng)用將更加廣泛。

長期重要路線圖:OpenCL正不斷探索加強(qiáng)內(nèi)存和執(zhí)行模式的方式,以利用不斷更新的硬件功能。另外,OpenCL正不斷努力利用經(jīng)優(yōu)化的同步工具,使并行程序模式在 OpenCL 運(yùn)行得更加強(qiáng)健。

WebCL: OpenCL的愿景是通過Java腳本綁定件進(jìn)行并行運(yùn)算。

標(biāo)準(zhǔn)并行中間表示(OpenCL-SPIR):OpenCL計(jì)劃擺脫創(chuàng)建編譯器和語言綁定件的業(yè)務(wù)。創(chuàng)建標(biāo)準(zhǔn)化中間表示,可通過不屬于OpenCL內(nèi)核團(tuán)隊(duì)的工程師將OpenCL綁定至新語言,這樣可擴(kuò)大OpenCL的應(yīng)用范圍,并使得OpenCL中間表示成為現(xiàn)在乃至未來編譯器的目標(biāo)。

OpenCL前景光明,但仍面臨著許多問題亟待解決,工作組的當(dāng)前計(jì)劃已經(jīng)解決了其中的很多問題。在下一個運(yùn)算階段,我們預(yù)測處理內(nèi)核將會劇增,包括異構(gòu)CPU和異構(gòu)CPU/GPU,我們?nèi)詫⑿枰墒燔浖軜?gòu),這有助于使我們利用所有硬件運(yùn)算功能,將其應(yīng)用于我們的系統(tǒng)。在這種大趨勢下,OpenCL被堅(jiān)持定位為開放、自由、成熟的標(biāo)準(zhǔn),得到行業(yè)支持,并將擁有光明的未來。

責(zé)任編輯:gt

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

    關(guān)注

    68

    文章

    19028

    瀏覽量

    228442
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    49937

    瀏覽量

    419591
  • 嵌入式
    +關(guān)注

    關(guān)注

    5052

    文章

    18906

    瀏覽量

    300699
  • OpenGL
    +關(guān)注

    關(guān)注

    1

    文章

    85

    瀏覽量

    29178
  • OpenCL
    +關(guān)注

    關(guān)注

    2

    文章

    48

    瀏覽量

    33239
收藏 人收藏

    評論

    相關(guān)推薦

    誠聘嵌入式軟件架構(gòu)

    ,本科以上學(xué)歷;2、三年以上嵌入式軟件系統(tǒng)架構(gòu)設(shè)計(jì)經(jīng)驗(yàn),同時有通信行業(yè)軟件開發(fā)經(jīng)驗(yàn);3、精通C/C++語言,精通數(shù)據(jù)結(jié)構(gòu);熟悉QT\linux\android嵌入式軟件
    發(fā)表于 03-01 10:20

    [嵌入式linux] 嵌入式學(xué)習(xí)分享:那些繞不開的技術(shù)點(diǎn)

    接口這一塊兒就會讓很多新手摸不到頭腦吧。2. 嵌入式繞不開交叉編譯工具嵌入式一般都需要自己搭建交叉編譯工具鏈,當(dāng)然MCU類的開發(fā)也會有成熟的
    發(fā)表于 04-16 09:51

    嵌入式系統(tǒng)設(shè)計(jì)具有什么特點(diǎn)

    嵌入式系統(tǒng)開發(fā)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì)的主要任務(wù)是定義系統(tǒng)的功能、決定系統(tǒng)的架構(gòu),并將功能映射到系統(tǒng)實(shí)現(xiàn)
    發(fā)表于 11-08 06:02

    嵌入式系統(tǒng)設(shè)計(jì)的主要任務(wù)是什么

    嵌入式系統(tǒng)設(shè)計(jì)的主要任務(wù)是定義系統(tǒng)的功能 、 決定系統(tǒng)的架構(gòu),并將功能映射到系統(tǒng)實(shí)現(xiàn)架構(gòu)上。這里,系統(tǒng)
    發(fā)表于 11-09 08:27

    嵌入式Linux開發(fā)基礎(chǔ)知識

     嵌入式系統(tǒng)開發(fā)模式嵌入式Linux系統(tǒng)的構(gòu)成主要任務(wù)與流程利用Skyeye仿真開發(fā)
    發(fā)表于 09-10 11:07 ?39次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>開發(fā)</b>基礎(chǔ)知識

    嵌入式并行光學(xué)應(yīng)用

    Avago Technologies 嵌入式并行光學(xué)應(yīng)用
    發(fā)表于 05-24 16:45 ?0次下載

    ARM嵌入式應(yīng)用程序架構(gòu)設(shè)計(jì)工具

    電子專業(yè)單片機(jī)相關(guān)知識學(xué)習(xí)教材資料——ARM嵌入式應(yīng)用程序架構(gòu)設(shè)計(jì)工具
    發(fā)表于 09-13 17:23 ?0次下載

    實(shí)時多任務(wù)嵌入式軟件的架構(gòu)方式的設(shè)計(jì)應(yīng)用

    分享到:標(biāo)簽:軟總線 嵌入式軟件 實(shí)時多任務(wù) 1.引言 隨著大型嵌入式系統(tǒng)向著集成化和多元化方向的發(fā)展,嵌入式軟件系統(tǒng)的復(fù)雜度也日益增大。在集成多個硬件工作模塊組成的復(fù)雜系統(tǒng)中,要求軟
    發(fā)表于 10-25 14:46 ?1次下載
    實(shí)時多<b class='flag-5'>任務(wù)</b><b class='flag-5'>嵌入式</b>軟件的<b class='flag-5'>架構(gòu)</b>方式的設(shè)計(jì)應(yīng)用

    嵌入式linux開發(fā)工具總結(jié)

    1.嵌入式linux開發(fā)工具-編譯器gcc(靜態(tài)庫 動態(tài)庫的制作)可以制作庫 庫的使用2.嵌入式linux開發(fā)工具-調(diào)試器gdb(調(diào)試方法)目標(biāo):可以調(diào)試簡單的錯誤以及內(nèi)存錯誤3.
    發(fā)表于 11-01 16:32 ?12次下載
    <b class='flag-5'>嵌入式</b>linux<b class='flag-5'>開發(fā)工具</b>總結(jié)

    嵌入式linux c語言,嵌入式LinuxC語言開發(fā)工具.pdf

    2 章 嵌入式Linux C 語言開發(fā)工具本章目標(biāo)任何應(yīng)用程序的開發(fā)都離不開編輯器、編譯器及調(diào)試器,嵌入式Linux 的C 語言開發(fā)也一樣,
    發(fā)表于 11-01 17:38 ?12次下載
    <b class='flag-5'>嵌入式</b>linux c語言,<b class='flag-5'>嵌入式</b>LinuxC語言<b class='flag-5'>開發(fā)工具</b>.pdf

    視頻教程-嵌入式Linux多任務(wù)編程-嵌入式

    嵌入式Linux多任務(wù)編程 嵌入式工程師、嵌入式講師、10多年
    發(fā)表于 11-02 11:21 ?22次下載
    視頻教程-<b class='flag-5'>嵌入式</b>Linux多<b class='flag-5'>任務(wù)</b>編程-<b class='flag-5'>嵌入式</b>

    嵌入式系統(tǒng)開發(fā)設(shè)計(jì)

    嵌入式系統(tǒng)開發(fā)設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì)的主要任務(wù)是定義系統(tǒng)的功能、決定系統(tǒng)的架構(gòu),并將功能映射到系統(tǒng)實(shí)現(xiàn)
    發(fā)表于 11-03 11:06 ?19次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>開發(fā)</b>設(shè)計(jì)

    《C嵌入式編程設(shè)計(jì)模式》讀書筆記

    《C嵌入式編程設(shè)計(jì)模式》第一章 什么是嵌入式編程嵌入式系統(tǒng)的基本知識面向?qū)ο缶幊膛c結(jié)構(gòu)化編程使用C語言實(shí)現(xiàn)類、繼承、狀態(tài)機(jī)?第二章
    發(fā)表于 11-03 16:06 ?13次下載
    《C<b class='flag-5'>嵌入式</b>編程設(shè)計(jì)<b class='flag-5'>模式</b>》讀書筆記

    嵌入式軟件架構(gòu)設(shè)計(jì)之任務(wù)調(diào)度

    嵌入式MCU軟件開發(fā)過程中,程序任務(wù)調(diào)度架構(gòu)的搭建尤為重要,直接關(guān)系到該程序能支持多少功能(隨著功能越多系統(tǒng)響應(yīng)能力越弱,好的任務(wù)調(diào)度
    的頭像 發(fā)表于 02-15 14:44 ?2085次閱讀
    <b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>架構(gòu)</b>設(shè)計(jì)之<b class='flag-5'>任務(wù)</b>調(diào)度

    嵌入式軟件最常見的架構(gòu)模式

    : ① **分層架構(gòu)** ② 多層架構(gòu)③ **管道 - 過濾器架構(gòu)** ④ 客戶端 - 服務(wù)器架構(gòu)⑤ 模型 - 視圖 - 控制器架構(gòu)⑥ **
    的頭像 發(fā)表于 06-22 10:32 ?2411次閱讀
    <b class='flag-5'>嵌入式</b>軟件最常見的<b class='flag-5'>架構(gòu)模式</b>