欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法與流程

文檔序號:11691025閱讀:280來源:國知局
面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法與流程

本發(fā)明主要到涉及到向量處理器以及數(shù)據(jù)處理領(lǐng)域,特指一種面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法。



背景技術(shù):

在許多科學(xué)計算任務(wù)和實際應(yīng)用中都會涉及到二維矩陣卷積運(yùn)算,如圖像處理、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò)及通信系統(tǒng)中的信號編解碼等,對于不同規(guī)模的二維矩陣卷積計算任務(wù),由于涉及到大量的數(shù)據(jù)訪存和乘加運(yùn)算,需要占用大量的訪存和計算時間,并行效率比較差。如何利用向量處理器的多功能部件、多運(yùn)算單元的特點來簡單而高效的實現(xiàn)不同規(guī)模的二維矩陣卷積的向量化運(yùn)算一直是業(yè)界的研究熱點。

在傳統(tǒng)的標(biāo)量處理器上,研究人員已經(jīng)提出了一些有效的二維矩陣卷積的實現(xiàn)方法,以加速二維矩陣卷積的運(yùn)算。但是,隨著人工智能、深度學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò)等學(xué)科的興起,在圖像識別、語音識別、文本識別及其他目標(biāo)識別領(lǐng)域中二維矩陣卷積占有著越來越重要的位置,尤其是在當(dāng)前目標(biāo)識別率最高的卷積神經(jīng)網(wǎng)絡(luò)模型中,如何加速二維矩陣的卷積運(yùn)算成為當(dāng)前研究的熱點和難點。隨著高密集、實時運(yùn)算應(yīng)用的不斷涌現(xiàn),單芯片難以滿足這類應(yīng)用的高密度實時計算需求,因此,向量處理器得到了廣泛應(yīng)用。

如圖1所示,為一個向量處理器的典型結(jié)構(gòu),其具有處理器、程序存儲器和數(shù)據(jù)存儲器(兩者均可以為任意的可訪問存儲器,包括外部高速緩沖存儲器、外部ram等)。向量處理器的處理器分為標(biāo)量處理部件和向量處理部件兩個部分,通常向量處理部件內(nèi)有k個并行處理單元(pe),這些處理單元都有各自的運(yùn)算部件和寄存器,處理單元間能通過規(guī)約指令進(jìn)行數(shù)據(jù)交互,如并行處理單元之間的數(shù)據(jù)相乘、比較等。標(biāo)量處理單元主要負(fù)責(zé)流控和邏輯判斷指令的處理,而向量處理單元主要負(fù)責(zé)密集型的數(shù)據(jù)計算。向量處理單元運(yùn)算所用的數(shù)據(jù)由向量數(shù)據(jù)存儲單元提供。一般地,如圖2所示,向量數(shù)據(jù)存儲單元的bank(存儲體)的個數(shù)與向量處理單元的處理單元個數(shù)k是一致的。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種原理簡單、操作方便、能大大增加算法并行度并提高計算效率的面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法。

為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:

一種面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法,其步驟為:

s1:輸入卷積矩陣a和卷積核矩陣b;通過dma控制器將卷積矩陣a和卷積核矩陣b分別搬運(yùn)到向量存儲單元和標(biāo)量存儲單元;

s2:將卷積矩陣a的一行元素和卷積核矩陣b的一個元素廣播后對應(yīng)的一行元素一一對應(yīng)相乘,相乘的結(jié)果通過一個初始化為0的累加寄存器進(jìn)行累加;

s3:通過混洗指令取出步驟s2中從卷積矩陣a中取出的一行元素的前k-1個元素至向量處理單元,并與本次取出并廣播至向量處理單元的卷積核矩陣b的第二個元素進(jìn)行一一對應(yīng)相乘,結(jié)果累加至步驟s2中的累加寄存器中;其中k為并行處理單元的個數(shù);

s4:判斷是否完成卷積核矩陣b一行元素的計算,若沒有完成,返回步驟s3,若完成則繼續(xù)步驟s5;

s5:將卷積矩陣a和卷積核矩陣b的數(shù)據(jù)地址指向相應(yīng)的下一數(shù)據(jù)行,最終完成卷積結(jié)果矩陣c的第一行元素的計算,通過循環(huán)步驟s2~步驟s5最終完成整個卷積結(jié)果矩陣c的計算。

作為本發(fā)明的進(jìn)一步改進(jìn):在上述步驟s1的搬運(yùn)過程中,通過dma控制器的配置,卷積矩陣a的每一行組織成一個數(shù)據(jù)幀,卷積核矩陣b的每一個元素組織成一個數(shù)據(jù)幀,整個卷積矩陣a共可分成p個數(shù)據(jù)幀,當(dāng)所述數(shù)據(jù)幀的元素個數(shù)不等于向量處理器中并行處理單元的個數(shù)k的倍數(shù)時,在數(shù)據(jù)幀尾部補(bǔ)0使得每個數(shù)據(jù)幀的元素個數(shù)等于并行處理單元的個數(shù)k的倍數(shù)。

作為本發(fā)明的進(jìn)一步改進(jìn):對于m×m的卷積矩陣a卷積n×n的卷積核矩陣b的運(yùn)算,得到(m-n+1)×(m-n+1)的卷積結(jié)果矩陣c,且m≧n,結(jié)果矩陣c的每一個元素都是由卷積核矩陣b(n×n)的所有元素在卷積矩陣a(m×m)上與卷積核矩陣b同樣大小的區(qū)域進(jìn)行點積運(yùn)算并累加求和的結(jié)果。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:本發(fā)明的面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法,通過dma完成卷積矩陣a和卷積核矩陣b分別搬移至向量存儲體和標(biāo)量存儲體,同時還充分利用向量處理器中的向量部件多個并行處理單元能夠同時進(jìn)行相同運(yùn)算操作的特點來進(jìn)行大量的同類型操作,通過配置特殊的混洗模式,大量復(fù)用每次取到的卷積矩陣a的數(shù)據(jù),從而大大降低卷積矩陣a的訪存量,進(jìn)而大幅度提高二維矩陣卷積的計算效率,且步驟簡單,易于實現(xiàn)。

附圖說明

圖1是典型的向量處理器結(jié)構(gòu)示意圖。

圖2是向量處理器中的向量數(shù)據(jù)存儲單元的結(jié)構(gòu)示意圖。

圖3是本發(fā)明的總流程示意圖。

圖4是本發(fā)明中卷積矩陣a在向量數(shù)據(jù)存儲單元中的加載形式及卷積核矩陣b的元素標(biāo)量廣播至向量寄存器的示意圖。

圖5是本發(fā)明在具體應(yīng)用實例2中卷積矩陣a(16×16)在向量存儲單元中的存放形式示意圖。

圖6是本發(fā)明在具體應(yīng)用中配置的混洗模式1的實施示意圖。

圖7是本發(fā)明在具體應(yīng)用中配置的混洗模式2的實施示意圖。

圖8是本發(fā)明在具體應(yīng)用實例2中完成卷積結(jié)果矩陣c一行元素的實現(xiàn)步驟示意圖。

圖9是本發(fā)明在具體應(yīng)用實例3中卷積矩陣a在向量數(shù)據(jù)存儲單元中的存放形式示意圖。

圖10是本發(fā)明在具體應(yīng)用實例3中完成卷積結(jié)果矩陣c一行元素的實現(xiàn)步驟示意圖。

具體實施方式

以下將結(jié)合說明書附圖和具體實施例對本發(fā)明做進(jìn)一步詳細(xì)說明。

如圖3和圖4所示,本發(fā)明的面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法,其步驟為:

s1:輸入卷積矩陣a和卷積核矩陣b;通過dma控制器將卷積矩陣a和卷積核矩陣b分別搬運(yùn)到向量存儲單元和標(biāo)量存儲單元;

s2:將卷積矩陣a的一行元素和卷積核矩陣b的一個元素廣播后對應(yīng)的一行元素一一對應(yīng)相乘,相乘的結(jié)果通過一個初始化為0的累加寄存器進(jìn)行累加;

s3:通過混洗指令取出步驟s2中從卷積矩陣a中取出的一行元素的前k-1個元素至向量處理單元,并與本次取出并廣播至向量處理單元的卷積核矩陣b的第二個元素進(jìn)行一一對應(yīng)相乘,結(jié)果累加至步驟s2中的累加寄存器中;其中k為并行處理單元的個數(shù);

s4:判斷是否完成卷積核矩陣b一行元素的計算,若沒有完成,返回步驟s3,若完成則繼續(xù)步驟s5;

s5:將卷積矩陣a和卷積核矩陣b的數(shù)據(jù)地址指向相應(yīng)的下一數(shù)據(jù)行,最終完成卷積結(jié)果矩陣c的第一行元素的計算,通過循環(huán)步驟s2~步驟s5最終完成整個卷積結(jié)果矩陣c的計算。

在上述步驟s1的搬運(yùn)過程中,通過dma控制器的配置,卷積矩陣a的每一行組織成一個數(shù)據(jù)幀,卷積核矩陣b的每一個元素組織成一個數(shù)據(jù)幀,整個卷積矩陣a共可分成p個數(shù)據(jù)幀,當(dāng)所述數(shù)據(jù)幀的元素個數(shù)不等于向量處理器中并行處理單元的個數(shù)k的倍數(shù)時,在數(shù)據(jù)幀尾部補(bǔ)0使得每個數(shù)據(jù)幀的元素個數(shù)等于并行處理單元的個數(shù)k的倍數(shù)。

在具體應(yīng)用實例1中,本發(fā)明面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法,其詳細(xì)流程為:

s101、輸入卷積矩陣a和卷積核矩陣b;通過dma控制器將卷積矩陣a和卷積核矩陣b分別搬運(yùn)到向量存儲單元和標(biāo)量存儲單元;

即:通過dma控制器的配置,可以將卷積矩陣a的每一行組織成一個數(shù)據(jù)幀,卷積核矩陣b的每一個元素組織成一個數(shù)據(jù)幀,整個卷積矩陣a共可分成p個數(shù)據(jù)幀。當(dāng)數(shù)據(jù)幀的元素個數(shù)不等于向量處理器中并行處理單元的個數(shù)k的倍數(shù)時,在數(shù)據(jù)幀尾部補(bǔ)0使得每個數(shù)據(jù)幀的元素個數(shù)等于并行處理單元的個數(shù)k的倍數(shù)。

s102、將卷積矩陣a的一行元素和卷積核矩陣b的第1個元素廣播后對應(yīng)的一行元素一一對應(yīng)相乘,相乘的結(jié)果通過一個初始化為0的累加寄存器進(jìn)行累加。

s103、通過混洗指令取出步驟s102中從卷積矩陣a中取出的那一行元素的前k-1個元素至向量處理單元,并與本次取出并廣播至向量寄存器的卷積核矩陣b的第2個元素進(jìn)行一一對應(yīng)相乘,結(jié)果累加至步驟s102中的累加寄存器中。

s104、判斷是否完成卷積核矩陣b一行元素的計算,若沒有完成,返回步驟s103,若完成則繼續(xù)步驟s105。

s105、將卷積矩陣a和卷積核矩陣b的數(shù)據(jù)地址指向相應(yīng)的下一數(shù)據(jù)行,最終完成卷積結(jié)果矩陣c的第一行元素的計算,通過循環(huán)步驟s102~步驟s105,最終完成整個卷積結(jié)果矩陣c的計算。

對于m×m的卷積矩陣a卷積n×n的卷積核矩陣b的運(yùn)算,可以得到(m-n+1)×(m-n+1)的卷積結(jié)果矩陣c,且m≧n,結(jié)果矩陣c的每一個元素都是由卷積核矩陣b(n×n)的所有元素在卷積矩陣a(m×m)上與卷積核矩陣b同樣大小的區(qū)域進(jìn)行點積運(yùn)算并累加求和的結(jié)果。

在具體應(yīng)用實例2中,本發(fā)明面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法,用來計算規(guī)模為16×16的卷積矩陣a卷積規(guī)模為5×5的卷積核矩陣b(向量處理單元個數(shù)k為16),如圖8所示,其詳細(xì)流程為:

s1001、輸入卷積矩陣a(16×16)和卷積核矩陣b(5×5);通過dma搬運(yùn)卷積矩陣a和卷積核矩陣b分別到向量存儲單元和標(biāo)量存儲單元,卷積矩陣a在向量單元的存放方式如圖5所示,卷積核矩陣b則連續(xù)存放在標(biāo)量存儲單元中。

s1002、將卷積矩陣a的一行元素和卷積核矩陣b的一個元算分別加載到向量處理單元和標(biāo)量處理單元中,由于卷積矩陣a的規(guī)模為16×16,該向量處理器有16個同構(gòu)處理單元,因此一次加載卷積矩陣a的一行元素至向量寄存器,加載卷積核矩陣b的第1個元素至標(biāo)量寄存器,之后通過廣播指令將該標(biāo)量寄存器廣播至向量寄存器中,將加載卷積矩陣a一行元素的向量寄存器與卷積核矩陣b廣播后對應(yīng)的向量寄存器對應(yīng)相乘并累加至初始化為0的累加寄存器中;之后,通過特殊配置的混洗模式1將第一次取出的卷積矩陣a第一行16個元素的前15個元素取出至一個向量寄存器中,并將不足16個元素的位置寫0(混洗模式1的實現(xiàn)方式如圖6所示);取卷積核矩陣b的第2個元素至標(biāo)量寄存器,同樣進(jìn)行廣播操作至向量寄存器中,并與此時的具有卷積矩陣a前15個元素的向量寄存器一一對應(yīng)向乘,相乘結(jié)果累加至同樣的累加寄存器中,由于卷積核矩陣b的規(guī)模為5×5,因此該循環(huán)共計進(jìn)行5次(卷積核矩陣的列數(shù)),進(jìn)而完成卷積核矩陣b第一行元素的計算。

s1003、將卷積矩陣a和卷積核矩陣b的數(shù)據(jù)地址指向相應(yīng)的下一數(shù)據(jù)行,返回步驟s1002完成卷積核矩陣b第2行元素的計算,該行計算結(jié)果同樣累加至相同的累加寄存器中,由于卷積核矩陣b的規(guī)模為5×5,因此步驟s1003共計循環(huán)5次(卷積核矩陣的行數(shù))完成卷積結(jié)果矩陣c(12×12)第一行12個元素的計算。

s1004、重復(fù)步驟s1002、s100312次(16-5+1)最終完成整個卷積結(jié)果c矩陣所有元素的計算。

在具體應(yīng)用實例3中,本發(fā)明面向向量處理器的二維矩陣卷積的向量化實現(xiàn)方法,用來計算規(guī)模為8×8的卷積矩陣a卷積規(guī)模為4×4的卷積核矩陣b(向量處理單元個數(shù)k為16),如圖9和圖10所示,其詳細(xì)流程為:

s10001、如圖6所示,通過dma搬運(yùn)卷積矩陣a和卷積核矩陣b分別到向量存儲單元和標(biāo)量存儲單元,這個過程與實施例1操作相同。

s10002、將卷積矩陣a的兩行元素和卷積核矩陣b的第1個元素分別加載到向量處理單元和標(biāo)量處理單元中,這里由于卷積矩陣a的規(guī)模為8×8,而向量處理單元的個數(shù)k為16,因此,一次可以加載卷積矩陣a的兩行數(shù)據(jù),由于是由卷積核的規(guī)模來控制核心循環(huán)的次數(shù),因此即使加載的向量數(shù)據(jù)不是處理單元個數(shù)k的整數(shù)倍,也不需要額外進(jìn)行補(bǔ)0操作。由于本次加載的是卷積矩陣a的前兩行數(shù)據(jù),首先取卷積核矩陣b的第1個元素至標(biāo)量寄存器并通過標(biāo)向量廣播指令廣播至向量寄存器中,通過乘加指令完成內(nèi)層循環(huán)的第一次累加,繼而通過混洗模式1對第1次取到的卷積矩陣a的向量寄存器進(jìn)行混洗操作(混洗方法與實施例2相同),接著取卷積核矩陣b的第2個元素并廣播至向量寄存器,一一對應(yīng)相乘后累加至第一次的累加寄存器中,循環(huán)4次完成卷積核矩陣b一行元素的計算。

s10003、為了提高卷積矩陣a的數(shù)據(jù)復(fù)用率,通過混洗模式2將步驟2中取到的卷積矩陣a的前兩行數(shù)據(jù)的第2行數(shù)據(jù)放置到另一個向量寄存器中,并將不足16個元素的處理單元置0(混洗模式2的實現(xiàn)方式如圖7所示),繼而進(jìn)入步驟s10002,循環(huán)4次完成卷積核矩陣b第二行元素的計算。

s10004、順移到卷積矩陣a的下兩行和卷積核矩陣的后兩行,重復(fù)步驟s10002、s10003,完成卷積結(jié)果矩陣c(5×5)第一行元素的計算,重復(fù)步驟s10002~s1004共計5次循環(huán),最終完成整個卷積結(jié)果矩陣c(5×5)的計算。

以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平度市| 讷河市| 长子县| 福泉市| 健康| 安新县| 安多县| 泗水县| 工布江达县| 铁岭市| 宝清县| 缙云县| 南汇区| 山阳县| 华池县| 香港 | 太保市| 钟山县| 延长县| 罗甸县| 安义县| 东台市| 新邵县| 尚义县| 南康市| 樟树市| 福鼎市| 武穴市| 老河口市| 关岭| 泸州市| 沂南县| 黄浦区| 兴化市| 岳阳市| 襄樊市| 阳泉市| 中方县| 柳州市| 右玉县| 怀安县|