国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      面向gpdsp的大規(guī)模矩陣乘法計(jì)算的方法

      文檔序號(hào):8319128閱讀:1011來(lái)源:國(guó)知局
      面向gpdsp的大規(guī)模矩陣乘法計(jì)算的方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明主要涉及通用計(jì)算數(shù)字信號(hào)處理器(General-Purpose Digital SignalProcessor,簡(jiǎn)稱GPDSP),特指一種適用于GPDSP的大規(guī)模矩陣乘法計(jì)算的方法。
      【背景技術(shù)】
      [0002]基本線性代數(shù)算法庫(kù)(Basic Linear Algebra Subroutines,BLAS)是各類科學(xué)計(jì)算最常用的核心數(shù)學(xué)算法庫(kù)之一,工業(yè)界針對(duì)各自的處理器平臺(tái)都推出了高度優(yōu)化的BLAS實(shí)現(xiàn),如 IBM 的ESSUIntel 的MKL、AMD 的 ACML等。其中,矩陣乘法(General Matrix-MatrixMultiplicat1n,GEMM)是BLAS庫(kù)的核心算法。GEMM是典型的計(jì)算密集和訪存密集型應(yīng)用,對(duì)處理器的運(yùn)算能力、訪存帶寬及延遲要求非常高,相關(guān)文獻(xiàn)研宄表明GEMM計(jì)算占據(jù)高性能基準(zhǔn)測(cè)試程序(High Performance Linpack,HPL)運(yùn)算量的90%以上。因此,針對(duì)處理器的體系結(jié)構(gòu)特點(diǎn)研宄GEMM優(yōu)化方法對(duì)評(píng)測(cè)該處理器的計(jì)算效率、發(fā)揮處理器的計(jì)算優(yōu)勢(shì)和提高應(yīng)用程序的運(yùn)行速度均具有很重要的參考價(jià)值。
      [0003]分塊矩陣乘法方法是提升大規(guī)模GEMM性能的主要方法,最典型的研宄是Gunnels針對(duì)基于Cache的多級(jí)存儲(chǔ)結(jié)構(gòu),提出的分層計(jì)算的GEMM優(yōu)化方法,能夠降低存儲(chǔ)層次間搬運(yùn)數(shù)據(jù)的平均開(kāi)銷。面向Cache結(jié)構(gòu)的分塊矩陣乘法方法的主要思想是將大矩陣的乘法分割為一系列子矩陣的乘法,設(shè)m為Cache的容量,則分塊參數(shù)中的子矩陣塊大小blocksize通常滿足約束條件blocksize〈 = sqrt (m/3),使得子矩陣計(jì)算時(shí)的數(shù)據(jù)訪問(wèn)能夠全部在Cache中命中,該部分的計(jì)算能以接近峰值的性能進(jìn)行,從而提高整個(gè)大矩陣乘法的計(jì)算性能。
      [0004]在專利申請(qǐng)?zhí)枮?01310725118.6的文獻(xiàn)(處于實(shí)審階段)中提供了一種通用計(jì)算數(shù)字信號(hào)處理器(General-Purpose Digital Signal Processor,簡(jiǎn)稱 GPDSP),它包含CPU核單元和DSP核單元,CPU核單元主要用于負(fù)責(zé)包括存儲(chǔ)管理、文件控制、進(jìn)程調(diào)度、中斷管理任務(wù)在內(nèi)的通用事務(wù)管理以及提供對(duì)通用操作系統(tǒng)的完整支持;DSP核單元包含若干強(qiáng)大計(jì)算能力的64位向量處理陣列,用于支持高密集運(yùn)算任務(wù)的解算。傳統(tǒng)的面向Cache結(jié)構(gòu)的分塊矩陣乘法方法不適合GPDSP的非Cache的向量陣列存儲(chǔ)訪存模式和向量處理陣列并發(fā)向量處理的體系結(jié)構(gòu)特征,難以發(fā)揮GPDSP向量計(jì)算優(yōu)勢(shì)。

      【發(fā)明內(nèi)容】

      [0005]本發(fā)明要解決的技術(shù)問(wèn)題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問(wèn)題,本發(fā)明提供一種原理簡(jiǎn)單、操作方便、能充分利用GPDSP的CPU核通用計(jì)算和DSP核向量處理陣列強(qiáng)大并行計(jì)算、高帶寬向量數(shù)據(jù)加載能力,顯著提高DSP核計(jì)算訪存比的面向GPDSP的大規(guī)模分塊矩陣乘法計(jì)算的方法。
      [0006]為解決上述技術(shù)問(wèn)題,本發(fā)明采用以下技術(shù)方案:
      [0007]一種面向GPDSP的大規(guī)模矩陣乘法計(jì)算的方法,其步驟為:
      [0008]S1:由GPDSP的CPU核在片外DDR存儲(chǔ)器為矩陣A、B和C分配存儲(chǔ)空間,并生成初始化數(shù)據(jù)或者從其他數(shù)據(jù)來(lái)源傳輸本次計(jì)算所需要的數(shù)據(jù);
      [0009]S2:根據(jù)GPDSP的體系結(jié)構(gòu)特征確定最佳的分塊矩陣乘法所需要的分塊大小MB、KB和NB,即令矩陣的M、K、N三個(gè)維數(shù)對(duì)應(yīng)的分塊大小分別標(biāo)記為MB、KB、NB ;
      [0010]S3:由GPDSP的CPU核根據(jù)步驟S2確定的MB、KB、NB值將矩陣A、B和C進(jìn)行邏輯分塊,令 mi = INT (M/MB),ki = INT (K/KB), ni = INT(N/NB),其中 INT ()表示對(duì)括號(hào)中的值向上取整;矩陣A的子塊標(biāo)記為Au(l彡i彡mi,I彡j彡ki),矩陣B的子塊標(biāo)記為Bjk (I ^ j ^ ki, I ^ k ^ ni),矩陣 C 的子塊標(biāo)記為 Cik (I < i < mi, I < k < ni);
      [0011]S4:由GPDSP的CPU核調(diào)度DSP核計(jì)算子塊矩陣的乘加計(jì)算:Cik+ =Aij^Bjk (I ^ i ^ mi, I ^ j ^ ki, I ^ k ^ ni);
      [0012]S5:計(jì)算完畢。
      [0013]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S2中NB的確定方法是NB = p*q。
      [0014]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S2中MB、KB的確定方法為:設(shè)條件(I)MB*KB*w 彡 s3,(2) (MB*KB*w+KB*NB*w) ( sl,按照滿足條件(I) (2)取得的最大 MB、KB 值為所需要的MB、KB值。
      [0015]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S4的具體流程為:
      [0016]S4.1:由GPDSP的CPU核通過(guò)DMA將矩陣A的子塊Aij (I彡i彡mi, I彡j彡ki)加載至片內(nèi)共享存儲(chǔ)陣列中,i,j的初始值均為I ;
      [0017]S4.2:由GPDSP的CPU核調(diào)度各個(gè)DSP核分別計(jì)算子塊八^與矩陣B的子塊Bjk(I彡k彡ni)的矩陣乘加計(jì)算Cik+ = Aij^Bjk(I彡k彡ni);
      [0018]S4.3:由GPDSP的CPU核判斷DSP核是否完成子塊八^與矩陣B的所有子塊Bjk (I彡k彡ni)的矩陣乘加計(jì)算Cik+ = Aij^Bjk (I彡k彡ni),若是轉(zhuǎn)步驟S4.4,若不是則轉(zhuǎn)步驟S4.2,直至上述DSP核計(jì)算任務(wù)全部完成;
      [0019]S4.4:判斷j是否等于ki,若不是令j = j+1,轉(zhuǎn)步驟S4.1 ;若是,則繼續(xù)判斷i是否等于mi,若不是令i = i+1,j = 1,轉(zhuǎn)步驟S4.1 ;若是,轉(zhuǎn)步驟S5 ;
      [0020]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S4.2中共有k = ni次子塊矩陣的乘加計(jì)算,由CPU核調(diào)度各個(gè)DSP核依次計(jì)算各子塊矩陣的乘加計(jì)算,每個(gè)DSP核接收到計(jì)算任務(wù)后按照CPU分配的矩陣B和C的邏輯分塊由各自核的DMA加載至片內(nèi)向量存儲(chǔ)數(shù)據(jù)陣列,完成子塊矩陣的乘加計(jì)算后通知CPU核;CPU核根據(jù)子塊計(jì)算的完成情況派發(fā)新的子塊矩陣乘加計(jì)算任務(wù),直至上述k = ni次子塊矩陣的乘加計(jì)算全部完成。
      [0021]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S4.2中的GPDSP的DSP核計(jì)算子塊Aij與矩陣B的子塊Bjk(l彡k彡ni)的矩陣乘加計(jì)算Cik+ = Aij^Bjk(I彡k彡ni)包括如下流程:
      [0022]S4.2.1:由GPDSP的DSP核將片內(nèi)標(biāo)量存儲(chǔ)器LlD的存儲(chǔ)訪問(wèn)模式配置為SRAM訪問(wèn)模式;
      [0023]S4.2.2:將子塊Aij根據(jù)片內(nèi)標(biāo)量存儲(chǔ)器的容量大小劃分為Mb個(gè)長(zhǎng)度為KB的連續(xù)計(jì)算子塊,并標(biāo)記為Ax(I彡X彡INT(MB/Mb));
      [0024]上述參數(shù)Mb的確定方法是,滿足條件:2*Mb*KB*w ( s2取得的最大Mb值為所需要的Mb值;
      [0025]S4.2.3:DSP核通過(guò)DMA依次將子塊AjP載至片內(nèi)標(biāo)量存儲(chǔ)器LlD中,初始X = 1,計(jì)算子塊矩陣乘加:Cxk+ = Ax*BJk(l ^ X ^ INT(MB/Mb));
      [0026]S4.2.3計(jì)算中共有MB/Mb次子塊矩陣的乘加計(jì)算,DSP核通過(guò)各自的DMA分別加載Ax至片內(nèi)標(biāo)量存儲(chǔ)數(shù)據(jù)陣列,完成Cxk+ = Ax*Bjk單元塊的矩陣乘加計(jì)算任務(wù),直至上述MB/Mb次子塊的矩陣乘加計(jì)算全部完成。
      [0027]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟S4中包括DSP核在片內(nèi)標(biāo)量存儲(chǔ)器進(jìn)一步分塊的流程:DSP核將子塊Aij根據(jù)片內(nèi)標(biāo)量存儲(chǔ)器的容量大小劃分為Mb個(gè)長(zhǎng)度為KB的連續(xù)計(jì)算子塊,并標(biāo)記為Ax(I ( X ( INT(MB/Mb));上述參數(shù)Mb的確定方法是,滿足條件:2*Mb*KB*w ( s2取得的最大Mb值為所需要的Mb值;DSP核通過(guò)DMA依次將子塊Ax加載至片內(nèi)標(biāo)量存儲(chǔ)器LlD中,初始X = I,計(jì)算子塊矩陣乘加:Cxk+ = Ax*Bjk(l彡X彡INT (MB/Mb)) ο
      [0028]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
      [0029]本發(fā)明的面向GPDSP的大規(guī)模矩陣乘法計(jì)算的方法,原理簡(jiǎn)單、操作方便,基于GPDSP的體系結(jié)構(gòu)特征,利用其高效的CPU核和DSP核協(xié)同計(jì)算實(shí)現(xiàn)大規(guī)模矩陣乘法計(jì)算;本發(fā)明由CPU核運(yùn)行操作系統(tǒng),負(fù)責(zé)數(shù)據(jù)的分割和任務(wù)的調(diào)度、數(shù)據(jù)同步,DSP核運(yùn)行負(fù)責(zé)分塊矩陣乘法計(jì)算的核心程序,不間斷的從CPU核獲取新的計(jì)算任務(wù)并將運(yùn)行結(jié)果報(bào)告CPU核。由上可知,本發(fā)明提供的任務(wù)分割方法能夠充分發(fā)揮CPU核的通用計(jì)算和DSP核的強(qiáng)大向量化計(jì)算能力的優(yōu)點(diǎn),實(shí)現(xiàn)CPU核與DSP核間的緊密協(xié)同配合,高效的實(shí)現(xiàn)大規(guī)模矩陣乘法計(jì)算。
      【附圖說(shuō)明】
      [0030]圖1是本發(fā)明所面向的GPDSP的簡(jiǎn)化訪存結(jié)構(gòu)模型示意圖。
      [0031]圖2是本發(fā)明方法的流程示意圖。
      [0032]圖3是本發(fā)明在具體應(yīng)用實(shí)例中GPDSP的CPU核對(duì)矩陣A、B和C進(jìn)行邏輯分塊的流程示意圖。
      [0033]圖4是本發(fā)明在具體應(yīng)用實(shí)例中GPDSP的CPU核對(duì)矩陣A、B和C在M、K和N維進(jìn)行任務(wù)調(diào)度的流程示意圖。
      [0034]圖5是本發(fā)明在具體應(yīng)用實(shí)例中GPDSP的DSP核在片內(nèi)標(biāo)量存儲(chǔ)器進(jìn)一步分塊的流程示意圖。
      [0035]圖6是本發(fā)明在具體應(yīng)用實(shí)例中GPDSP的DSP核在片內(nèi)標(biāo)量存儲(chǔ)器進(jìn)行的子塊矩陣乘加計(jì)算的流程示意圖。
      【具體實(shí)施方式】
      [0036]以下將結(jié)合說(shuō)明書(shū)附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
      [0037]如圖1所示,為本發(fā)明在具體應(yīng)用實(shí)例中所面向的GPDSP的簡(jiǎn)化訪存結(jié)構(gòu)模型示意圖。系統(tǒng)包括CPU核單元和DSP核單元,DSP核單元包含若干64位向量處理陣列計(jì)算單元、專用的片內(nèi)標(biāo)量存儲(chǔ)器和向量陣列存儲(chǔ)器,CPU核單元和DSP核單元共享的片內(nèi)共享存儲(chǔ)、大容量的片外DDR存儲(chǔ)器。
      [0038]設(shè)GPDSP中DSP核數(shù)量為r個(gè);DSP核的向量處理陣列計(jì)算單元數(shù)量為P個(gè),每個(gè)計(jì)算單元的MAC (乘加部件)數(shù)量為q個(gè),DSP核的片內(nèi)向量陣列存儲(chǔ)器容量為si字節(jié),DSP核的片內(nèi)標(biāo)量存儲(chǔ)器容量為s2字節(jié);GPDSP的片內(nèi)共享存儲(chǔ)陣列容量為s3字節(jié),GPDSP的片外共享DDR存儲(chǔ)容量為s4字節(jié)。設(shè)計(jì)算的GEMM矩陣乘加運(yùn)算為C+ = A*B,其中A為MXK階的矩陣,B為KXN階的矩陣,C為MXN階的矩陣,每個(gè)矩陣元素的數(shù)據(jù)為w字節(jié)。
      [0039]如圖2所示,本發(fā)明面向GPDSP的大規(guī)模矩陣乘法計(jì)算的方法在具體應(yīng)用實(shí)例中的流程為:
      [0040]S1:由GPDSP的CPU核在片外DDR存儲(chǔ)器為矩陣A、B和C分配存儲(chǔ)空間,并生成初始化數(shù)據(jù)或者從其他數(shù)據(jù)來(lái)源傳輸本次計(jì)算所需要的數(shù)據(jù)。
      [0041]S2:根據(jù)GPDSP的體系結(jié)構(gòu)特征確定最佳的分塊矩陣乘法所需要的分塊大小MB、KB 和 NB。
      [0042]令矩陣的M、K、N三個(gè)維數(shù)對(duì)應(yīng)的分塊大小分別標(biāo)記為MB、KB、NB。
      [0043]其中,NB的確定方法是NB = p*q。MB,KB的確定方法為:設(shè)條件(l)
      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1