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

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

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

OpenCL編程語言可以幫助我們使用GPU或者多核處理器的并行能力

SSDFans ? 來源:lp ? 2019-04-19 17:31 ? 次閱讀

一、并行處理

所謂并行處理就是同時(shí)處理多個(gè)計(jì)算程序,應(yīng)用程序處理器典型的設(shè)計(jì)是使用單線程盡可能快的去執(zhí)行應(yīng)用程序,這種類型的處理器通常包含標(biāo)量操作單元和程序控制器。GPU是被設(shè)計(jì)用來同時(shí)執(zhí)行大量線程的處理器,GPU處理器的典型設(shè)計(jì)是使用多處理器并行的處理多個(gè)任務(wù)。

OpenCL編程語言可以幫助我們使用GPU或者多核處理器的并行能力。OpenCL是一種開放標(biāo)準(zhǔn)的變成語言,它能夠使開發(fā)者在GPU或者其他類型的多核處理器上運(yùn)行通用計(jì)算任務(wù)。

二、并行類型

1.數(shù)據(jù)并行

數(shù)據(jù)并行,任務(wù)并行和流水線(pipelines)并行是主要的并行類型。

數(shù)據(jù)并行是將數(shù)據(jù)劃分為不同的數(shù)據(jù)元素或者數(shù)據(jù)塊,使得處理器可以并行的處理不同的數(shù)據(jù)元素。多個(gè)處理器可以同時(shí)的讀寫和處理不同的數(shù)據(jù)。因此數(shù)據(jù)并行要求數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)可以滿足多個(gè)處理器同時(shí)讀寫的要求。GPU進(jìn)行通用計(jì)算,最典型的應(yīng)用便是數(shù)據(jù)并行。通過OpenCL等編程語言可以很輕松的實(shí)現(xiàn)不同的線程以相同的方式處理不同的數(shù)據(jù)。如下圖所示:可以使用9個(gè)線程,同時(shí)完成9組數(shù)據(jù)的相加。

2.任務(wù)并行

任務(wù)并行,是指一個(gè)任務(wù)被分解為多個(gè)小任務(wù),由多個(gè)處理器同時(shí)處理。任務(wù)并行的一個(gè)簡單例子便是在網(wǎng)頁上播放一段視頻,為了能夠在網(wǎng)頁上播放視頻,我們的設(shè)備需要做如下幾個(gè)任務(wù):

運(yùn)行一個(gè)執(zhí)行通信網(wǎng)絡(luò)堆棧

從外部服務(wù)器請(qǐng)求數(shù)據(jù)

分析數(shù)據(jù)

解碼視頻數(shù)據(jù)

解碼音頻數(shù)據(jù)

渲染視頻幀數(shù)據(jù)

播放音頻數(shù)據(jù)

下圖顯示了播放在線視頻的時(shí)候應(yīng)用程序同時(shí)操作的系統(tǒng);

3.流水線并行

流水線是通過多個(gè)不同的計(jì)算階段處理數(shù)據(jù),在流水線上多個(gè)階段可以同時(shí)操作,但是他們操作的是不同的數(shù)據(jù)。流水線通常擁有相當(dāng)少的階段。下面是一個(gè)關(guān)于流水線的例子,一個(gè)錄像程序必須執(zhí)行的幾個(gè)階段:

圖像傳感器捕捉圖像數(shù)據(jù),并且計(jì)算亮度級(jí)別

根據(jù)鏡頭效果修正圖像數(shù)據(jù)

修正圖像數(shù)據(jù)的對(duì)比度,色彩平衡和曝光

壓縮圖像數(shù)據(jù)

將圖像數(shù)據(jù)添加到視頻文件

將視頻數(shù)據(jù)寫入存儲(chǔ)器

這些階段必須按照順序執(zhí)行,但是他們可以同時(shí)在視頻中的不同幀上執(zhí)行。

我們將6個(gè)處理階段,對(duì)應(yīng)6中顏色,分別表示6個(gè)處理單元:

按照串行的處理方式,處理一幀圖像需要串行的經(jīng)過6個(gè)處理單元,假設(shè)需要300us的延遲,每一個(gè)處理單元消耗50us。這是一種組合邏輯的實(shí)現(xiàn)過程,我們只需要每300us輸入一幀圖像即可,不需要在處理單元內(nèi)部做同步。

如果使用流水線技術(shù),那么處理流程將完全不同,流水線技術(shù)是一種指令疊加技術(shù),能夠增加系統(tǒng)的吞吐量,但是同時(shí)會(huì)帶來每一幀數(shù)據(jù)的處理延遲會(huì)增加。具體處理流程如下圖所示:

圖中給出了A、B、C三幀數(shù)據(jù)的處理流程;當(dāng)A進(jìn)入第二階段的時(shí)候,B便可以進(jìn)入第一階段,當(dāng)B進(jìn)入第二階段的時(shí)候,C便可以進(jìn)入第一階段,以此類推;但是需要注意的是,我們需要在每一個(gè)階段的結(jié)束位置添加寄存器,用于數(shù)據(jù)同步。假設(shè)寄存器延遲為20us(請(qǐng)忽略單位,寄存器延遲不會(huì)達(dá)到us級(jí)別,為了計(jì)算方便這里做了不合實(shí)際的假設(shè))。那么處理3幀數(shù)據(jù),需要消耗的時(shí)間為:

8×(50 + 20) = 560 us;

而串行處理方式需要消耗300 × 3 = 900 us;但是不使用流水線獲取每一幀數(shù)據(jù)輸入到輸出的延遲為300us,而加入流水線技術(shù)后,獲取數(shù)據(jù)的延遲為420us。

不使用流水線時(shí),系統(tǒng)的吞吐量為:1/300;使用流水線后,系統(tǒng)的吞吐量為:3/420= 1/140;可以看到系統(tǒng)的吞吐量增加了2.14倍(注:吞吐量的計(jì)算忽略單位,倍數(shù)的計(jì)算是準(zhǔn)確的)。所以通過使用流水線技術(shù)可以顯著增加系統(tǒng)的吞吐量,但是會(huì)增加系統(tǒng)的延遲。

但是流水線在使用過程中也存在弊端,以上的任務(wù)劃分是均分的,但是在實(shí)際使用中,由于任務(wù)劃分的不均勻,會(huì)造成流水線產(chǎn)生不同的延遲,不合理的階段劃分,很容易導(dǎo)致流水線阻塞,造成性能降低。

三.混合使用不同的并行方式及其并行加速限制

在具體的應(yīng)用中可以綜合使用不同的并行方式,例如在一個(gè)音頻分析的應(yīng)用中,就可以同時(shí)使用以上三種并行方式。

可以使用任務(wù)并行來獨(dú)立的計(jì)算音符

使用音頻生成流水線和處理模塊來創(chuàng)造獨(dú)特的音符

在流水線內(nèi)部,一些處理階段可以使用數(shù)據(jù)并行來加速計(jì)

但同時(shí)并行加速也有他的限制,假設(shè)你的應(yīng)用程序能夠完全并行化,那么使用10個(gè)處理器來執(zhí)行,可以將程序性能提升10倍,但是很少有應(yīng)用程序可以完全并行化,程序中很大可能會(huì)存在串行部分,而串行部分則會(huì)限制程序的并行化數(shù)量。

Amdahl定律描述了并行程序可以實(shí)現(xiàn)的最大加速,Amdahl定律的公式如下:

Speedup = 1/(s + p / n);其中,s表示應(yīng)用程序中串行的部分,p表示應(yīng)用程序中并行的部分,n表述處理器的數(shù)量。

下圖展示了不同數(shù)量的處理器對(duì)串行比例不同的應(yīng)用程序所能提供的加速比率變化曲線:

在后續(xù)的文章中會(huì)更加細(xì)致的介紹如何使用OpenCL在移動(dòng)端GPU上對(duì)應(yīng)用程序進(jìn)行并行化。

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

    關(guān)注

    68

    文章

    18926

    瀏覽量

    227218
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128140
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1916

    瀏覽量

    34374

原文標(biāo)題:原來GPU這么簡單,一定要看!

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式多核處理器硬件結(jié)構(gòu)分析與對(duì)排序算法進(jìn)行并行化優(yōu)化

    常常在嵌入式領(lǐng)域使用,常見的是通用嵌入式處理器+DSP核。本文探究的嵌入式多核處理器采用同構(gòu)結(jié)構(gòu),實(shí)現(xiàn)同一段代碼在不同處理器上的并行執(zhí)行。
    的頭像 發(fā)表于 10-17 07:55 ?3907次閱讀

    面向多核處理器的低級(jí)并行程序驗(yàn)證

    指令的操作語義和所需要的安全策略,使得在該框架下可以驗(yàn)證多核并行程序的部分正確性。關(guān)鍵詞 多核處理器,自旋鎖,程序驗(yàn)證,匯編級(jí),部分正確性A
    發(fā)表于 10-06 09:56

    每日一教labview視頻教程【1.10】labview多核并行運(yùn)行編程

    隨著多核成為處理器的發(fā)展主流,對(duì)于并行編程(多線程編程)也成為了開發(fā)人員最大的難題,而LabVIEW憑借自身的
    發(fā)表于 01-10 13:48

    GPU

    ,也是一個(gè)統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計(jì)算服務(wù)、桌面計(jì)算系統(tǒng)、手持設(shè)備編寫高效輕便的代碼,而且廣泛適用于多核處理器(CPU)、圖形
    發(fā)表于 01-16 08:59

    探討采用C6000系列多核DSP的并行計(jì)算(OpenCL、OpenMP)實(shí)現(xiàn)大規(guī)模電磁系統(tǒng)的暫態(tài)仿真及其控制系統(tǒng)

    的運(yùn)算,實(shí)現(xiàn)物理時(shí)間和仿真時(shí)間的同步更新。第二是大規(guī)模,即整個(gè)系統(tǒng)在各部分各個(gè)時(shí)間尺度上都能覆蓋,而不是被簡化。在此要求下,必須對(duì)系統(tǒng)進(jìn)行劃分,對(duì)每一個(gè)劃分出來的小型子系統(tǒng)采用多核處理器進(jìn)行并行計(jì)算仿真
    發(fā)表于 12-03 20:42

    多核處理器的優(yōu)點(diǎn)

    處理器。通過在兩個(gè)執(zhí)行內(nèi)核之間劃分任務(wù),多核處理器可在特定的時(shí)鐘周期內(nèi)執(zhí)行更多任務(wù)。 多核技術(shù)能夠使服務(wù)
    發(fā)表于 06-20 06:47

    ARM Mali-T600系列GPU OpenCL開發(fā)人員指南

    。 GPU被設(shè)計(jì)為同時(shí)執(zhí)行多個(gè)線程。 它們并行運(yùn)行包含相對(duì)較少控制代碼的計(jì)算密集型數(shù)據(jù)處理任務(wù)。 GPU通常包含比應(yīng)用程序處理器多得多的
    發(fā)表于 08-24 07:07

    基于FPGA的嵌入式多核處理器及SUSAN算法并行

    基于FPGA的嵌入式多核處理器及SUSAN算法并行
    發(fā)表于 08-30 18:11 ?24次下載

    多核處理器會(huì)取代FPGA嗎?

    有人認(rèn)為諸如圖形處理器GPU)和Tilera處理器多核處理器在某些應(yīng)用中正逐步替代現(xiàn)場可編程
    發(fā)表于 02-11 11:15 ?985次閱讀
    <b class='flag-5'>多核</b><b class='flag-5'>處理器</b>會(huì)取代FPGA嗎?

    嵌入式ARM多核處理器并行化優(yōu)化探究

    目前,嵌入式多核處理器已經(jīng)在嵌入式設(shè)備領(lǐng)域得到廣泛運(yùn)用,但嵌人式系統(tǒng)軟件開發(fā)技術(shù)還停留在傳統(tǒng)單核模式,并沒有充分發(fā)揮多核處理器的性能。程序并行
    發(fā)表于 10-16 10:01 ?1次下載
    嵌入式ARM<b class='flag-5'>多核</b><b class='flag-5'>處理器</b><b class='flag-5'>并行</b>化優(yōu)化探究

    基于NI LabVIEW圖形化編程對(duì)多核處理器和其他并行硬件進(jìn)行編程

    NI LabVIEW圖形化編程方法不僅省時(shí),還很適合對(duì)多核處理器和其他并行硬件[如:現(xiàn)場可編程門陣列(FPGA)]進(jìn)行
    發(fā)表于 11-16 19:30 ?1468次閱讀
    基于NI LabVIEW圖形化<b class='flag-5'>編程</b>對(duì)<b class='flag-5'>多核</b><b class='flag-5'>處理器</b>和其他<b class='flag-5'>并行</b>硬件進(jìn)行<b class='flag-5'>編程</b>

    基于圖形處理器GPU并行化解決方法

    目前目標(biāo)識(shí)別領(lǐng)域,在人體檢測中精確度最高的算法就是可變形部件模型( DPM)算法,針對(duì)DPM算法計(jì)算量大的缺點(diǎn),提出了一種基于圖形處理器GPU)的并行化解決方法。采用GPU
    發(fā)表于 12-28 11:16 ?1次下載

    Imagination宣布其BXS-4-64 GPU將用于德州儀器Jacinto處理器系列

    德州儀器處理器業(yè)務(wù)平臺(tái)工程總監(jiān)Jim Kennedy說道:“在Imagination BXS GPU的支持下,我們推出了具有更高性能、更低帶寬和更強(qiáng)安全功能的差異化汽車處理器產(chǎn)品。IM
    的頭像 發(fā)表于 11-13 15:04 ?2356次閱讀

    開源的RISC-V處理器多核并行能力已超過x86

    開源RISC-V正朝著自己的方向越發(fā)越強(qiáng)大,它對(duì)其他架構(gòu)的處理器也造成了不少的威脅。RISC-V不僅能實(shí)現(xiàn)5GHz的超高頻率,而且日前其多核并行能力也已經(jīng)超過了x86。
    的頭像 發(fā)表于 12-10 09:21 ?1992次閱讀

    淺談多核系統(tǒng)編程技術(shù)

    因?yàn)镹I LabVIEW是數(shù)據(jù)流編程語言,開發(fā)者們可以編寫并行的應(yīng)用程序,這些應(yīng)用程序可以直接映射到并行
    的頭像 發(fā)表于 10-27 17:08 ?355次閱讀