亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

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

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

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



背景技術:

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

附圖說明

圖1是典型的向量處理器結構示意圖。

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

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

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

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

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

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

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

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

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

具體實施方式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1