• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種計算系統和電子設備技術方案

    技術編號:14028047 閱讀:88 留言:0更新日期:2016-11-19 13:09
    本申請涉及運算加速技術領域,公開了一種計算引擎和電子設備,用以提高數據利用率,降低帶寬需求,提升計算性能。該計算引擎包括緩存管理模塊、匹配分發模塊和至少L個計算模塊,緩存管理模塊用于讀取M維輸入向量中的L個元素值并進行緩存,以及在M×N參數矩陣中與L個元素值對應的子矩陣中依次讀取L維行向量并傳送至匹配分發模塊,匹配分發模塊用于每接收到一個L維行向量,從緩存管理模塊中取出對應的一個元素值,將取出的一個元素值與L維行向量中的值進行匹配,將各個匹配結果分別發送到至少L個計算模塊中的對應計算模塊;任意一個計算模塊用于對匹配結果進行計算。

    【技術實現步驟摘要】

    本申請涉及運算加速
    ,特別涉及一種計算引擎和電子設備。
    技術介紹
    在人工智能領域中,一些類似于字符識別、圖像分類、語音識別等技術需要具備復雜算法功能的網絡技術來實現,例如深度神經網絡(英文:Deep Neural Network,DNN)技術已經成為具有代表性的算法,廣泛應用于搜索引擎、智能手機等產品中。典型的DNN結構如圖1所示,DNN結構中具有一個輸入層,一個輸出層,以及若干個隱藏層,圖1中以具有兩個隱藏層為例。其中,圖1中每一個圓圈代表一個神經元,如輸入層4個神經元分別用a1、a2、a3、a4表示。每一個神經元進行著相同的運算操作,即,對前一層傳遞而來的信號之和求激活函數,激活函數的輸出作為該神經元的輸出傳遞到下一層的神經元中。典型的激活函數如sigmoid函數,以圖1中神經元z1為例,基于sigmoid函數的神經元的計算過程為:該式中,w是網絡的權重參數,表示網絡中神經元之間邊的權重,b是一個偏移值項。整個網絡中的每個神經元都是不斷重復上述計算過程,把前一層的信號經過計算傳遞到下一層。圖1所示的DNN結構是以具有2個隱藏層為例的神經網絡,實際應用中,往往會使用更大、更深的網絡結構,需要進行大量的乘加運算。傳統的采用CPU來對DNN結構中的神經元進行計算無法滿足像語音識別等一些實時計算的需求,因此需要采用一些運算加速的方法。一種現有的運算加速方案采用現場可編程門陣列(英文:Field-Programmable Gate Array,縮寫:FPGA)實現,將一個固定的網絡結構通過FPGA硬化實現。因為DNN結構每一層的計算,在激活函數之前等效于一個向量乘以一個矩陣的運算,因此,實際在實現DNN計算的過程中,每一層采用的是先向量與矩陣的乘法,再進行激活函數計算的運算流程。例如,一個采用sigmoid激活函數的固定DNN網絡大小是:256-512-512-512-10,即輸入層、3個隱藏層、輸出層的神經元的個數分別是256、512、512、512和10。則任何一個256維的數據樣本作為輸入層進入DNN計算后,需要在第一層(即輸入層)做一次256向量乘以256*512矩陣的運算,輸出一個512向量,然后對輸出的512向量中的每一個元素計算sigmoid激活函數,輸入到第二層,后面計算依次類推,直至輸出層輸出。一種典型的用于計算向量矩陣相乘的硬件結構是乘法、加法陣列。如上面的網絡的第一層,計算256向量乘以256*512矩陣,則采用如圖2所示的64個乘法以及后續的加法的陣列,一次計算64向量*64向量,式中第一個64向量是256向量中的連續64個數,式中第二個64向量為矩陣第一列的連續64個數,乘法和加法運算分別采用乘法器和加法器執行。第一次運算過程為256向量中第一個64向量與256*512矩陣中第一列的第一個64向量相乘,第二次運算過程為為256向量中第二個64向量與256*512矩陣中第一列的第二個64向量相乘,按照上述方式將整個運算過程分批完成。上述現有的這種硬件計算架構,對輸入乘法器的兩個乘數,在下一次計算都無法使用,因此每次都需要數據的導入和導出。綜上,這種運算方式對帶寬需求大,硬件計算架構的計算性能的瓶頸則受到了輸入帶寬的限制,無法發揮出其最大的計算性能。
    技術實現思路
    本申請實施例提供一種計算引擎和電子設備,用以提高數據利用率,降低帶寬需求,提升計算性能。本申請實施例提供的具體技術方案如下:一方面,提供一種計算引擎,該計算引擎包括緩存管理模塊、匹配分發模塊和至少L個計算模塊,其中,所述緩存管理模塊用于基于兩個端口分別接收兩個輸入量,這兩個輸入量分別來自于M維輸入向量和M×N參數矩陣,具體用于讀取M維輸入向量中的L個元素值并進行緩存,以及,在M×N參數矩陣中與所述L個元素值對應的子矩陣中依次讀取L維行向量并傳送至所述匹配分發模塊,其中,所述M×N參數矩陣可包括若干個子矩陣,每一個子矩陣均為L階方陣,M、N、L均為大于1的整數;所述匹配分發模塊,用于每接收到所述緩存管理模塊傳送的一個L維行向量,從所述緩存管理模塊中緩存的所述L個元素值中取出與接收到的L維行向量對應的一個元素值,將取出的一個元素值與所述L維行向量中的各個值分別進行匹配,將各個匹配結果分別發送到所述至少L個計算模塊中的對應計算模塊,其中任意一個匹配結果包含所述取出的一個元素值與一個所述L維行向量中的一個值組成的數據組合;任意一個所述計算模塊,用于針對所述匹配分發模塊發送的匹配結果進行計算。這樣,每次緩存的L個元素值,可以與M×N參數矩陣中與所述L個元素值對應的子矩陣中的所有數據結合進行計算,之后的處理過程將不再使用這L個元素值。即從緩存中讀取一次向量的數據,可以連續使用多輪處理過程,實現一次緩存多次計算,發揮數據局部性原理,使得數據利用率最大化,降低了帶寬需求,提升了計算性能。在一個可能的設計中,在執行在M×N參數矩陣中與所述L個元素值對應的子矩陣中依次讀取L維行向量的操作時,所述緩存管理模塊具體用于:根據所述L個元素值在所述M維輸入向量中的列序號范圍,在所述M×N參數矩陣中選擇與所述列序號范圍相同的行序號范圍對應的子矩陣集合;在選出的子矩陣集合中按照列序號從小到大的順序依次選擇子矩陣,每選擇一個子矩陣,在選出的子矩陣中按照行序號從小到大的順序依次讀取L維行向量。通過上述讀取L個元素值對應的L維行向量的處理過程,將向量與矩陣的計算順序做優化調整,可以將在M×N參數矩陣中與L個元素值對應的所有值都依次讀取出來并進行計算,從而充分發揮L個元素值的作用,達到一次讀取,多次運算的目的。在一個可能的設計中,所述匹配分發模塊從所述緩存管理模塊中緩存的所述L個元素值中取出與接收到的L維行向量對應的一個元素值滿足以下條件:取出的所述一個元素值的列序號與所述接收到的L維行向量在所述M×N參數矩陣中的行序號相同。通過這樣的配對方式,能夠將取出的一個元素值分別與對應的L維行向量中的值進行配對,以便于進一步發送到不同的計算模塊中進行并行計算,同樣可以達到取一個值參與多個計算的目的。在一個可能的設計中,所述匹配分發模塊還用于,在每一個所述匹配結果中攜帶所述L維行向量中對應值的列索引信號,所述列索引信號用于指示所述L維行向量中對應值在所述M×N參數矩陣中的列序號。這樣,可以根據列索引信號采用取模方式尋找對應的計算模塊,不用發送連續的列,可以支持稠密矩陣和稀疏矩陣的計算;基于列索引信號,控制數據分發,實現計算模塊負載均衡與高資源利用率。在一個可能的設計中,所述M×N參數矩陣采用分塊二級行列交叉方式進行存儲,所述分塊二級行列交叉方式是指,將所述M×N參數矩陣分為若干個子矩陣,其中,全部或部分子矩陣為L階方陣,所有子矩陣采用先行后列的順序排列,且,在每一個子矩陣中,采用先行后列的順序進行存儲。通過上述存儲方式,打破了傳統的按照行或者列連續存儲矩陣的方式,從而可以實現本申請中計算引擎所執行的方法。在一個可能的設計中,任意一個所述計算模塊用于:將接收到的匹配結果中包含的一個元素值與一個所述L維行向量中的一個值相乘,得到乘積結果;將攜帶相同的列索引信號的匹配結果對應的乘積結果進行累加,得到累加結果。這樣,通過列索引信號將原始數據的格式與計算過程解耦,可本文檔來自技高網
    ...
    一種<a  title="一種計算系統和電子設備原文來自X技術">計算系統和電子設備</a>

    【技術保護點】
    一種計算引擎,其特征在于,包括緩存管理模塊、匹配分發模塊和至少L個計算模塊,其中:所述緩存管理模塊,用于讀取M維輸入向量中的L個元素值并進行緩存,以及,在M×N參數矩陣中與所述L個元素值對應的子矩陣中依次讀取L維行向量并傳送至所述匹配分發模塊,其中,所述M×N參數矩陣可包括若干個子矩陣,每一個子矩陣均為L階方陣,M、N、L均為大于1的整數;所述匹配分發模塊,用于每接收到所述緩存管理模塊傳送的一個L維行向量,從所述緩存管理模塊中緩存的所述L個元素值中取出與接收到的L維行向量對應的一個元素值,將取出的一個元素值與所述L維行向量中的各個值分別進行匹配,將各個匹配結果分別發送到所述至少L個計算模塊中的對應計算模塊,其中任意一個匹配結果包含所述取出的一個元素值與一個所述L維行向量中的一個值組成的數據組合;任意一個所述計算模塊,用于針對所述匹配分發模塊發送的匹配結果進行計算。

    【技術特征摘要】
    1.一種計算引擎,其特征在于,包括緩存管理模塊、匹配分發模塊和至少L個計算模塊,其中:所述緩存管理模塊,用于讀取M維輸入向量中的L個元素值并進行緩存,以及,在M×N參數矩陣中與所述L個元素值對應的子矩陣中依次讀取L維行向量并傳送至所述匹配分發模塊,其中,所述M×N參數矩陣可包括若干個子矩陣,每一個子矩陣均為L階方陣,M、N、L均為大于1的整數;所述匹配分發模塊,用于每接收到所述緩存管理模塊傳送的一個L維行向量,從所述緩存管理模塊中緩存的所述L個元素值中取出與接收到的L維行向量對應的一個元素值,將取出的一個元素值與所述L維行向量中的各個值分別進行匹配,將各個匹配結果分別發送到所述至少L個計算模塊中的對應計算模塊,其中任意一個匹配結果包含所述取出的一個元素值與一個所述L維行向量中的一個值組成的數據組合;任意一個所述計算模塊,用于針對所述匹配分發模塊發送的匹配結果進行計算。2.如權利要求1所述的計算引擎,其特征在于,所述緩存管理模塊用于在執行在M×N參數矩陣中與所述L個元素值對應的子矩陣中依次讀取L維行向量的操作時,具體用于:根據所述L個元素值在所述M維輸入向量中的列序號范圍,在所述M×N參數矩陣中選擇與所述列序號范圍相同的行序號范圍對應的子矩陣集合;在選出的子矩陣集合中按照列序號從小到大的順序依次選擇子矩陣,每選擇一個子矩陣,在選出的子矩陣中按照行序號從小到大的順序依次讀取L維行向量。3.如權利要求1或2所述的計算引擎,其特征在于,所述匹配分發模塊從所述緩存管理模塊中緩存的所述L個元素值中取出與接收到的L維行向量對應的一個元素值滿足以下條件:取出的所述一個元素值的列序號與所述接收到的L維行向量在所述M×N參數矩陣中的行序號相同。4.如權利要求1、2或3所述的計算引擎,其特征在于,所述匹配分發模塊還用于,在每一個所述匹配結果中攜帶所述L維行向量中對應值的列索引信號,所述列索引信號用于指示所述L維行向量中對應值在所述M×N參數矩陣中的列序號。5.如權利要求4所述的計算引擎,其特征在于,任意一個所述計算模塊用于針對所述匹配分發模塊發送的匹配結果進行計算時,具體用于:將接收到的匹配結果中包含的一個元素值與一個所述L維行向量中的一個值相乘,得到乘積結果;將攜帶相同的列索引信號的匹配結果對應的乘積結果進行累加,得到累加結果。6.如權利要求5所述的計算引擎,其特征在于,所述計算模塊包括乘法器、加法器、寄存器、比較器和局部存儲器,其中:任意一個所述計算模塊中的所述乘法器,用于將每次接收到的匹配結果中包含的一個元素值與一個所述L維行向量中的一個值相乘,得到乘積結果;任意一個所述計算模塊中的所述比較器,用于在所述乘法器計算之前,比較每次接收到的匹配結果中的列索引信號與上一次接收到的匹配結果中的列索引信號是否相同,獲得比較結果;任意一個所述計算模塊中的所述加法器,用于在所述比較器獲得比較結果為相同時,將所述乘法器獲得的乘積結果與所述寄存器中存儲的第一臨時累加值進行累加,按照累加所得結果更新所述第一臨時累加值;任意一個所述...

    【專利技術屬性】
    技術研發人員:徐斌,姚濱濱,袁宏輝
    申請(專利權)人:華為技術有限公司,
    類型:發明
    國別省市:廣東;44

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 手机在线观看?v无码片| r级无码视频在线观看| 蜜桃AV无码免费看永久| 亚洲AV综合永久无码精品天堂| 国产成人无码精品久久久小说| 亚洲日韩乱码中文无码蜜桃臀网站 | 无码午夜人妻一区二区不卡视频| 综合国产在线观看无码| 无码精品A∨在线观看无广告| 亚洲一区二区三区无码中文字幕| 黄色成人网站免费无码av| 亚洲国产精品无码久久久秋霞1| 日韩国产成人无码av毛片| 水蜜桃av无码一区二区| 亚洲欧洲美洲无码精品VA| 成人免费无码大片a毛片| 人妻中文字幕无码专区| 国产三级无码内射在线看| 精品人妻无码专区中文字幕| 免费无码AV电影在线观看| 亚洲AV无码一区二区三区人 | 日韩人妻无码一区二区三区| 免费A级毛片无码久久版| 无码任你躁久久久久久久| 久久亚洲精品无码av| 无码中文字幕av免费放| 无码专区永久免费AV网站| 亚洲av成人无码网站…| 人妻少妇看A偷人无码精品 | 亚洲日韩乱码中文无码蜜桃臀网站 | 中文字幕无码日韩专区免费| 亚洲AV永久无码精品成人| 久久久久久国产精品免费无码 | 无码精品A∨在线观看十八禁| 亚洲精品无码少妇30P| 亚洲日韩精品无码AV海量| av无码久久久久久不卡网站| 无码八A片人妻少妇久久| 蜜臀AV无码一区二区三区| 无码国产精成人午夜视频不卡| 亚洲欧洲免费无码|