[go: up one dir, main page]

TW201734764A - 用於定點矩陣乘法的記憶體減少方法 - Google Patents

用於定點矩陣乘法的記憶體減少方法 Download PDF

Info

Publication number
TW201734764A
TW201734764A TW106105017A TW106105017A TW201734764A TW 201734764 A TW201734764 A TW 201734764A TW 106105017 A TW106105017 A TW 106105017A TW 106105017 A TW106105017 A TW 106105017A TW 201734764 A TW201734764 A TW 201734764A
Authority
TW
Taiwan
Prior art keywords
intermediate result
matrix
block
fixed point
point data
Prior art date
Application number
TW106105017A
Other languages
English (en)
Inventor
馬修萊斯里 巴丁
奈森 懷特黑德
Original Assignee
高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 高通公司 filed Critical 高通公司
Publication of TW201734764A publication Critical patent/TW201734764A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

實施例包括計算設備、裝置,以及由該裝置實現的用於計算設備上的定點矩陣乘法的記憶體減少的方法。計算設備可以採用全精度、使用第一矩陣的定點資料的第一區塊和第二矩陣的定點資料的第二區塊來實現部分矩陣乘法,產生第一中間結果。計算設備可以經由將第一中間結果的定點資料轉換成採用低精度的定點資料,來對第一中間結果進行降頻轉換,產生第一降頻轉換的中間結果。

Description

用於定點矩陣乘法的記憶體減少方法
本案係關於用於定點矩陣乘法的記憶體減少方法。
在行動設備上大量地使用深度神經網路來實現各種各樣的任務,其包括場景偵測、人臉辨識、圖像分類與標注。深度神經網路為了完成該等任務,頻繁地使用迴旋,迴旋運算通常使用矩陣乘法來實現。深度神經網路模型被訓練用於浮點計算。在行動設備上,諸如預測模型之類的深度神經網路模型現在亦使用定點計算。但是,使用定點計算的深度神經網路模型的很多實現,需要使用額外記憶體量,其減少了行動設備的執行速度。
各個實施例包括用於計算設備上的定點矩陣乘法的記憶體減少的電路和方法。各個實施例可以使用電路系統及/或執行處理器可執行指令的處理器來實現,其中處理器可執行指令執行包括以下各項的操作:採用全精度、使用第一矩陣的定點資料的第一區塊和第二矩陣的定點資料的第二區塊來實現部分矩陣乘法,其產生第一中間結果。隨後,可以經由將第一中間結果的定點資料轉換成採用低精度的定點資料,對第一中間結果進行降頻轉換,其產生第一降頻轉換的中間結果。
一些實施例可以包括:儲存第一降頻轉換的中間結果;採用全精度、使用第一矩陣的定點資料的第三區塊和第二矩陣的定點資料的第四區塊來實現部分矩陣乘法,其產生第二中間結果,其中第一區塊和第三區塊表示第一矩陣的至少一個完整行,第二區塊和第四區塊表示第二矩陣的至少一個完整列。可以經由將第二中間結果的定點資料轉換成採用低精度的定點資料,對第二中間結果進行降頻轉換,其產生第二降頻轉換的中間結果。使用飽和加法,將第一降頻轉換的中間結果和第二降頻轉換的中間結果進行相加,該飽和加法將作為結果的矩陣的結果輸出部分的大小限制於輸出精度。
一些實施例可以包括:在第一時間段期間,接收定點資料的第一區塊和定點資料的第二區塊;及在第二時間段期間,接收定點資料的第三區塊和定點資料的第四區塊。
在一些實施例中,對第一中間結果進行降頻轉換可以包括:決定第一降頻轉換的中間結果的最大可表示大小;保留在大小上等於或者小於第一降頻轉換的中間結果的最大可表示大小的第一中間結果的保留部分;及移除第一中間結果的丟棄部分,第一中間結果的丟棄部分包括第一中間結果中不能容納於第一降頻轉換的中間結果的最大可表示大小的部分。
在一些實施例中,決定第一降頻轉換的中間結果的最大可表示大小可以包括:決定能夠用於儲存第一降頻轉換的中間結果的記憶體的量。
一些實施例可以包括:執行1與第一中間結果的丟棄部分的最左位元的二進位加法;決定1與第一中間結果的丟棄部分的最左位元的二進位加法的結果是否導致進位位元;及回應於決定1與第一中間結果的丟棄部分的最左位元的二進位加法導致進位位元,將該進位位元加到第一中間結果的保留部分的最右位元上。
在一些實施例中,對第一中間結果進行降頻轉換可以包括:使用等於輸出精度的該低精度,對第一中間結果進行降頻轉換。
一些實施例包括被配置有處理器可執行指令的處理器,以執行上文所概述的實施例方法中的一或多個的操作。一些實施例包括被配置為執行上文所概述的實施例方法中的一或多個的操作的電路系統。
一些實施例包括一種計算設備,該計算設備具有用於執行上文所概述的實施例方法中的一或多個的功能的構件。
各個實施例可以包括一種其上儲存有處理器可執行指令的非暫時性處理器可讀取儲存媒體,該等處理器可執行指令被配置為使處理器執行上文所概述的實施例方法中的一或多個的操作。
現在將參照附圖來詳細地描述各個實施例。在可以的地方,將貫穿附圖使用相同的元件符號來代表相同或者類似的部件。對於特定實例和實現的引用只是用於說明目的,而不是意欲限制請求項的範疇。
本文可互換地使用術語「計算設備」和「行動計算設備」來代表下文中的任何一項或者全部:蜂巢式電話、智慧型電話、個人或行動多媒體播放機、個人資料助理(PDA)、膝上型電腦、平板電腦、可轉換膝上型電腦/平板設備(2合1電腦)、智慧型電腦、超級本、小筆電、掌上電腦、無線電子郵件接收器、具備多媒體網際網路功能的蜂巢式電話、行動遊戲控制台、無線遊戲控制器,以及包括記憶體和多核可程式設計處理器的類似個人電子設備。此外,術語「計算設備」亦可以代表包括以下各項的靜止計算設備:個人電腦、桌面型電腦、一體式電腦、工作站、超級電腦、大型主機電腦、嵌入式電腦、伺服器、家庭影院電腦和遊戲控制台。儘管各個實施例對於諸如智慧型電話之類的行動計算設備(其具有有限的記憶體和電池資源)特別有用,但該等實施例通常亦可用於實現複數個記憶體設備和有限的功率預算的任何電子設備,其中減少處理器的功耗能夠延長行動計算設備的電池操作時間。
實施例包括用於實現減少或者消除使用定點計算的深度神經網路模型的額外記憶體需求的該方法的方法、系統和設備。實施例包括用於阻塞和捨入定點計算以模擬更高精度解,而不會產生更高精度解的記憶體成本,從而在對計算準確性具有最小影響的情況下,提高執行速度的方法。
在定點神經網路中,可以經由直接轉換或者縮放,來完成將浮點轉換成定點。對於直接轉換而言,計算所需的整數和小數的位元數,針對每者的位元數是基於所期望的效能來選擇的。對於縮放而言,所有數字被縮放為一定範圍內的正整數,並使用偏差來調整該範圍所落入的區間。
當使用縮放時,輸入通常按照比偏差更低的精度,並且用於實現矩陣乘法的累加,必須按照比矩陣乘法的輸入或輸出更高的精度來完成。例如,輸入和輸出中的每者可以是8位元,但計算的中間步驟的精度可以是32位元,此情形需要將輸出降頻轉換到8位元。將用於定點計算的相對於浮點計算的更高精度要求和利用快取記憶體來實現矩陣乘法的處理器阻塞技術進行組合,需要將部分中間結果儲存在記憶體中,是由於必須使快取記憶體閒置以便完成中間計算。實現該等操作所需的額外記憶體量,取決於用於進行相乘的矩陣的M和N維度的快取記憶體塊大小。此情形在圖3A中進行了圖示,並在下文更詳細地論述。因此,需要更多的記憶體,此舉降低了計算設備的效能/速度。
各個實施例和實現能夠減少或者消除儲存該等中間結果所需的記憶體量。該等中間結果可以是經由將矩陣A的區塊(其由用於維度M和K的快取記憶體塊大小來定義)與矩陣B的區塊(其由用於維度K和N的快取記憶體塊大小來定義)進行相乘來產生的。與維度M、K和N相比,快取記憶體塊大小可以更小。舉例而言,維度K可以是時間的維度,維度M和N可以是資料大小的維度。
可以使用累加函數將矩陣A和B的各個元素的相乘結果進行相加以產生中間結果,來實現該等矩陣的區塊的矩陣乘法。可以使用全精度,針對矩陣A和B的區塊、用於維度K和M或N的快取記憶體塊大小的大小,來實現乘法和累加。無論是準備根據中間結果來產生矩陣乘法的輸出部分,還是將中間結果儲存在記憶體中,皆可以將中間結果降頻轉換到更低精度格式。例如,可以將中間結果從32位元定點值向降頻轉換成16位元定點值。可以將該轉換的結果捨入或者截斷成可經由更低精度格式來表示的最近值。
可以將矩陣A和B的區塊的第一集合的矩陣乘法的降頻轉換的中間結果儲存在記憶體中,以便稍後用於使用矩陣A和B的第二集合的區塊的矩陣乘法的降頻轉換的中間結果,來完成矩陣乘法。
為了根據儲存在記憶體中的中間結果來產生輸出,可以使用飽和加法,將矩陣A和B的第一集合和第二集合的區塊的矩陣乘法的中間結果相加在一起,將輸出的值限制在指定的範圍之內。
計算定點矩陣乘法所需的額外的記憶體量(其需要與輸入或輸出相比更高精度的中間值),可以使用下式來計算: 額外的記憶體=M區塊*N區塊*中間精度大小
因此,在對中間結果進行降頻轉換之後,與全精度相比,中間精度大小可以減少所需的額外的記憶體量。使用等於輸出精度大小的中間精度大小,可以不會導致額外的記憶體需求。
圖1圖示適合於結合各個實施例使用的一種系統,其包括被配置為與遠端計算設備進行通訊的計算設備10。計算設備10可以包括具有處理器14、記憶體16、通訊介面18和儲存記憶體介面20的晶片上系統(SoC)12。該計算設備10亦可以包括諸如有線或無線數據機之類的通訊元件22、儲存記憶體24、用於建立無線通訊鏈路的天線26。處理器14可以包括各種各樣的硬體核心(例如,多個處理器核心)中的任何一種。
本文使用術語「晶片上系統」(SoC)代表一組相互連接的電子電路,其通常包括但不限於:硬體核心、記憶體和通訊介面。硬體核心可以包括各種不同類型的處理器,例如,通用處理器、中央處理單元(CPU)、數位訊號處理器(DSP)、圖形處理單元(GPU)、加速處理單元(APU)、輔助處理器、單核處理器和多核處理器。此外,硬體核心亦可以體現其他硬體和硬體組合,例如,現場可程式設計閘陣列(FPGA)、特殊應用積體電路(ASCI)、其他可程式設計邏輯設備、個別閘門邏輯裝置、電晶體邏輯裝置、效能監測硬體、看門狗硬體和時間基準。可以對積體電路進行配置,使得積體電路的元件位於單片的半導體材料(例如,矽)上。SoC 12可以包括一或多個處理器14。計算設備10可以包括多於一個的SoC 12,從而增加處理器14和處理器核心的數量。此外,計算設備10亦可以包括與SoC 12不相關聯的處理器14。各個處理器14可以是如下文參照圖2所描述的多核處理器。處理器14中的每一個可以被配置為用於特定目的,其可以與計算設備10的其他處理器14相同或者不同。可以將相同或不同配置的處理器14和處理器核心中的一或多個組合在一起。一組處理器14或處理器核心可以稱為多處理器簇。
SoC 12的記憶體16可以是被配置為儲存由處理器14進行存取的資料和處理器可執行代碼的揮發性或者非揮發性記憶體。計算設備10及/或SoC 12可以包括被配置為用於各種目的的一或多個記憶體16。在一個實施例中,一或多個記憶體16可以包括諸如隨機存取記憶體(RAM)或主記憶體或者快取記憶體的揮發性記憶體。該等記憶體16可以被配置為臨時地保持有限數量的從資料感測器或子系統接收的資料、從非揮發性記憶體請求的資料及/或處理器可執行代碼指令、基於各種因素而預期未來存取的從非揮發性記憶體載入到記憶體16的資料,及/或由處理器14產生的中介處理資料及/或處理器可執行代碼指令,以及臨時地儲存以便未來快速存取而無需儲存在非揮發性記憶體中的資料。
記憶體16可以被配置為至少臨時地儲存從另一個記憶體設備(例如,另一個記憶體16或儲存記憶體24)載入到記憶體16,以便由處理器14的一或多個處理器進行存取的資料和處理器可執行代碼。可以回應於處理器14對於某個功能的執行,對用於載入到記憶體16的資料或處理器可執行代碼進行載入。回應於某個功能的執行,將資料或處理器可執行代碼載入到記憶體16,可以源自於不成功或者未命中的針對記憶體16的記憶體存取請求(由於所請求的資料或處理器可執行代碼不位於記憶體16中)。回應於未命中,可以進行針對另一個記憶體16或儲存記憶體24的記憶體存取請求,以便將所請求的資料或處理器可執行代碼從另一個記憶體16或儲存記憶體24載入到記憶體設備16中。回應於某個功能的執行,將資料或處理器可執行代碼載入到記憶體16,可以源自於針對另一個記憶體16或儲存記憶體24的記憶體存取請求,可以將資料或處理器可執行代碼載入到記憶體16中以便稍後存取。
在一個實施例中,記憶體16可以被配置為至少臨時地儲存從原始資料來源設備(例如,感測器或子系統)載入到記憶體16的原始資料。原始資料可以從原始資料來源設備串流到記憶體16,並由該記憶體進行儲存,直到機器學習加速器可以接收和處理該原始資料為止,如本文進一步參照圖3-19所論述的。
儲存記憶體介面20和儲存記憶體24可以一致地工作,以允許計算設備10將資料和處理器可執行代碼儲存在非揮發性儲存媒體上。可以非常類似於記憶體16的實施例,對儲存記憶體24進行配置,其中儲存記憶體24可以儲存用於由處理器14中的一或多個處理器進行存取的資料或者處理器可執行代碼。即使在計算設備10的電源已經被關閉之後,儲存記憶體24(其是非揮發性的)亦可以保持該資訊。當電源被再次打開,計算設備10重新開機時,計算設備10可獲得儲存記憶體24上儲存的該資訊。儲存記憶體介面20可以控制針對儲存記憶體24的存取,並且允許處理器14從儲存記憶體24讀取資料和向儲存記憶體24寫入資料。
可以對計算設備10的元件中的一些或全部元件進行不同地排列及/或組合,同時仍然供應必要的功能。此外,計算設備10可以不限於該等元件中的每一元件的一個,在計算設備10的各個配置中可以包括每一元件的多個實例。
圖2圖示適合於實現一個實施例的多核處理器14。多核處理器14可以具有複數個同質或者異質的處理器核心200、201、202、203。處理器核心200、201、202、203可以是同質的,其在於:單個處理器14的處理器核心200、201、202、203可以被配置為用於相同目的,並且具有相同或類似的效能特性。例如,處理器14可以是通用處理器,並且處理器核心200、201、202、203可以是同質的通用處理器核心。替代地,處理器14可以是圖形處理單元或者數位訊號處理器,並且處理器核心200、201、202、203可以分別是同質的圖形處理器核心或者數位訊號處理器核心。為了便於引用起見,本文可以互換地使用術語「處理器」和「處理器核心」。
處理器核心200、201、202、203可以是異質的,其在於:單個處理器14的處理器核心200、201、202、203可以被配置為用於不同的目的,及/或具有不同的效能特性。該等異質處理器核心的異質性可以包括不同的指令集架構、管道、操作頻率等等。該等異質處理器核心的實例可以包括稱為「big.LITTLE」架構的架構,在該架構中,可以將慢速、低功率處理器核心與更強大和更耗電的處理器核心相耦合。在類似的實施例中,SoC 12可以包括多個同質或異質處理器14。
在圖2所圖示的實例中,多核處理器14包括四個處理器核心200、201、202、203(亦即,處理器核心0、處理器核心1、處理器核心2和處理器核心3)。為了便於解釋起見,本文的實例可以代表圖2中所圖示的四個處理器核心200、201、202、203。但是,圖2中所圖示和本文所描述的四個處理器核心200、201、202、203只是提供成一個實例,決不意味著將各個實施例限制於四核處理器系統。與本文所圖示和描述的四個處理器核心200、201、202、203相比,計算設備10、SoC 12或多核處理器14可以各自地或者組合地包括更少或者更多的處理器核心。
圖3A-3F圖示根據一個實施例,矩陣乘法的非限制性實例。該示例性矩陣乘法涉及矩陣A 300與矩陣B 302的相乘或者點積,以產生作為結果的矩陣304。
矩陣300、302可以具有獨立的維度M和N,其每者與被指定用於相應矩陣300、302的相應快取記憶體塊大小有關。矩陣300、302可以具有共享維度K,舉例而言,該共享維度K可以是時間的維度。例如,維度K可以與在接收輸入資料來處理矩陣A 300時使用的時間量或者時鐘循環有關。因此,對於矩陣A 300而言,計算設備可以取得、產生或者接收輸入資料,並將任何給定的時間K的輸入資料表示成矩陣A 300的列(一列等於維度M的大小)。
在執行矩陣乘法時,計算設備可以在與矩陣A 300的相應列相同的時間K內,產生或者提供表示成矩陣B 302的行的一組加權因數。因此,隨著時間流逝,可以沿著維度K來構建和遍歷矩陣300、302。作為結果的矩陣304可以具有維度M和N的大小。
在一些實現中,與維度M、N和K相比,用於矩陣300、302的維度M、N和K的快取記憶體塊大小可以更小。可以根據被指定用於或者可用於執行矩陣乘法的每一個維度的快取記憶體的量,來決定快取記憶體塊大小。快取記憶體塊大小可以限制在矩陣乘法的執行期間,矩陣300、302的每一個矩陣中能夠儲存到快取記憶體上的資料的量。用於維度M、N和K中的任何一個維度的快取記憶體塊大小,可能導致用於執行矩陣乘法的多步驟程序。
例如,在圖3B中,矩陣A 300的部分306a和矩陣B 302的部分308a,指示用於M、N和K的維度的快取記憶體塊大小。對於矩陣A 300而言,用於維度M的快取記憶體塊大小可以是3個單位,用於維度K的快取記憶體塊大小可以是兩個單位。類似地,對於矩陣B 302而言,用於維度N的快取記憶體塊大小可以是5個單位,用於維度K的快取記憶體塊大小可以是與用於矩陣A 300的維度K的快取記憶體塊大小相同的大小(亦即,兩個單位)。
可以以各種單位(其包括位元、位元組、字等等),來量測快取記憶體塊大小的單位和矩陣300、302的維度M、N、K的單位。為了便於方便解釋和簡短起見,用於每一個維度M、N和K的快取記憶體塊大小與M、N和K的維度之比圖示成2:1的比率。但是,用於每一個維度M、N和K的快取記憶體塊大小與M、N和K的維度之比可以是任何比率,該等比率可以是彼此之間相同或者不同的。此外,可以將矩陣300、302的資料格式化成浮點資料。
圖3C圖示分別使用矩陣300、302的區塊306a、308a的部分矩陣乘法的實現。矩陣300、302的區塊306a、308a可以儲存在快取記憶體中,乘法和加法/累加操作可以使用區塊306a、308a的資訊來實現部分矩陣乘法。
圖3C中的實例圖示了部分矩陣乘法的一種操作,其圖示區塊306a的行310與區塊308a的列312的相乘。使用通用矩陣乘法技術,可以將行310的每一個單位與列312的相應單位進行相乘,將乘法的結果相加以產生該操作的中間結果314。可以針對從矩陣300、302的浮點資料轉換來的矩陣300、302的定點資料,採用全精度來實現產生該中間結果314的乘法和加法/累加。與行310和列312中的任意一個相比,中間結果314可以更大。由於中間結果314是部分矩陣乘法的結果,因此該中間結果並不是準備進行輸出的資料。在圖3的實例中,要成為完整的輸出部分,中間結果還缺少來自於與區塊306a的行相對應的矩陣A 300的剩餘行和與區塊308a的列相對應的矩陣B 302的剩餘列的資料。因此,必須對中間結果314進行儲存。
可以將中間結果314向降頻轉換到更小大小的定點值,以便減少所需的儲存空間量。在從更高精度定點轉換到更低精度定點時,計算矩陣乘法所需的額外的記憶體量,可以經由下式來計算:額外的記憶體=M區塊*N區塊*中間精度大小。
使用更小的降頻轉換的中間精度大小來替換中間精度大小,可以減少所需的額外的記憶體量。在各種實現中,可以基於可用快取記憶體的量或者專用暫存器的大小及/或指定的準確性水平,來決定大小減少量。中間結果314向降頻轉換到的大小越小,則資料出錯的可能性就越高。因此,為了效能和準確性起見,可以對中間結果314向降頻轉換到的大小進行平衡,或者在各種應用中,可以偏向一個或另一個。降頻轉換的中間精度大小等於用於矩陣乘法的輸出精度的大小,可以消除對額外的記憶體來儲存值的需求,該等值可以稍後從定點中間結果精度向降頻轉換到更低精度定點輸出。
為了對全精度進行降頻轉換,可以基於用於儲存中間結果314的空間量,將定點中間結果314、中間結果314的部分移去資料的低端,達到可表示的大小。降頻轉換的中間結果316a、316b、316c可以包括中間結果的保留部分318a、318b、318c,保留部分318a、318b、318c可以是在移去中間結果的丟棄部分320a、320b、320c之後剩下的。可用的快取記憶體或暫存器空間越大,或者指定的準確性越大,則中間結果的保留部分318a、318b、318c就越大,中間結果的丟棄部分320a、320b、320c越小。類似地,可用的快取記憶體或暫存器空間越小,或者指定的準確性越小,則中間結果的保留部分318a、318b、318c就越小,中間結果的丟棄部分320a、320b、320c越大。
降頻轉換的中間精度大小可以是中間結果的保留部分318a、318b、318c的大小。降頻轉換可以包括:將中間結果的丟棄部分320a、320b、320c移去,其導致截斷的中間結果的保留部分318a、318b、318c。此外,降頻轉換亦可以包括:經由向中間結果的丟棄部分320a、320b、320c的最左位元加上被設置為「1」的二進位位元,來進行捨入。「0」和「1」的相加可以導致「1」的值,其可以與中間結果的丟棄部分320a、320b、320c一起丟棄,此舉導致對中間結果的保留部分318a、318b、318c向下捨入。「1」和「1」的相加可以導致具有進位位元「1」的「0」值。可以將該「0」位元與中間結果的丟棄部分320a、320b、320c一起丟棄,將進位位元「1」加到中間結果的保留部分318a、318b、318c的最右位元上,此舉導致對中間結果的保留部分318a、318b、318c向上捨入。捨入可以減少僅僅對降頻轉換的中間結果316a、316b、316c進行截斷時的錯誤量。
可以分別針對矩陣300、302的下一個可用區塊306b、308b,重複本文所描述的部分矩陣乘法的程序,如圖3D中所示。此外,亦可以將下一個可用區塊306b、308b的部分矩陣乘法的降頻轉換的中間結果,儲存在可用的快取記憶體或者專用暫存器中。
如圖3E中所示,隨著矩陣300、302的可用區塊306c、308c變得可用,可以分別針對可用區塊306c、308c來實現部分矩陣乘法。亦可以將區塊306c、308c的部分矩陣乘法的降頻轉換的中間結果,儲存在可用的快取記憶體或者專用暫存器中。可以使用飽和加法,對區塊306a、306c、308a、308c的部分矩陣乘法的儲存的降頻轉換的中間結果進行組合。針對區塊306a、306c、308a、308c的部分矩陣乘法的降頻轉換的中間結果進行飽和加法所獲得的和,可以產生作為結果的矩陣304的輸出部分322a。飽和加法可以對輸出部分322a的大小進行限制以維持輸出精度。
如圖3F中所示,可以對矩陣300、302的剩餘區塊306d、308d進行操作,以實現針對矩陣300、302的矩陣乘法的部分矩陣乘法的最終實現。根據部分矩陣乘法的該最終實現來產生降頻轉換的中間結果,可以經由使用降頻轉換的中間結果,實現飽和加法來產生輸出部分322b、322c、322d,來提供上一次的降頻轉換的中間結果來完成作為結果的矩陣304。
在各種實現中,可以根據可組合以產生作為結果的矩陣304的輸出部分的降頻轉換的中間結果的可用性,來實現飽和加法。在各種實現中,可以根據用於矩陣乘法的所有的降頻轉換的中間結果的可用性,來實現飽和加法。在各種實現中,可以以任何順序來產生作為結果的矩陣304的輸出部分。
圖4圖示根據各個實施例,用於針對定點矩陣乘法的記憶體減少的實施例方法400。可以利用在處理器(例如,圖1和圖2中的處理器14)中執行的軟體、利用專用硬體或電路系統,或者處理器和專用硬體的組合(諸如,在包括其他單個元件的機器學習設備中執行軟體的處理器),在計算設備中實現方法400。為了涵蓋在各個實施例中啟用的替代配置,本文將實現方法400的硬體稱為「計算設備」。
在方塊402中,計算設備可以接收、取得或者產生用於矩陣A和矩陣B的資料。例如,矩陣A的資料可以包括在任何給定的時間K,由計算設備取得、產生或者接收的用於進行處理的浮點輸入資料。例如,矩陣B的資料可以包括在相同的時間K內,接收、產生或者接收的一組浮點加權因數。可以將矩陣A的浮點輸入資料和矩陣B的浮點加權因數轉換成定點格式。
在方塊404中,計算設備可以採用全精度,針對矩陣A和矩陣B的資料區塊,實現部分矩陣乘法。該等資料區塊可以包括矩陣A和矩陣B的一行或多行和一列或多列,但其小於矩陣A和矩陣B的所有行和所有列。矩陣A和矩陣B的行數和列數,可能受到被分配給用於實現矩陣A和矩陣B的矩陣乘法的快取記憶體空間的量的限制,具體而言,受到被分配用於矩陣A和矩陣B中的一個的行、矩陣A和矩陣B中的另一個的列,以及與時間維度K有關的矩陣A和矩陣B的行或列的空間量的限制。計算設備可以經由採用全精度來實現針對矩陣A和矩陣B的區塊的矩陣乘法,使得作為結果的中間矩陣的每一個元素是全精度下的部分矩陣乘法的定點中間結果,來在方塊404中實現部分矩陣乘法。
在方塊406中,計算設備可以將全精度下的部分矩陣乘法的定點中間結果降頻轉換到更低精度的定點降頻轉換的中間結果。在下文參照圖5,描述了用於將全精度下的定點中間結果降頻轉換到更低精度的定點降頻轉換的中間結果的實施例方法500。
在方塊408中,計算設備可以儲存降頻轉換的中間結果。計算設備可以使用專用快取記憶體空間或者專用暫存器來儲存降頻轉換的中間結果。如前述,可用於儲存降頻轉換的中間結果的空間量,可以影響降頻轉換的中間結果的精度。此外,可用於儲存降頻轉換的中間結果的空間量,可以與指定的效能及/或準確性相關。可用於儲存降頻轉換的中間結果的空間越多,則矩陣乘法的結果準確性越高,但用於實現該矩陣乘法的執行速度就越慢。類似地,可用於儲存降頻轉換的中間結果的空間越少,則矩陣乘法的結果準確性越低,但用於實現該矩陣乘法的執行速度就越快。
計算設備可以繼續在方塊404中,採用全精度,針對矩陣A和矩陣B的資料區塊來實現部分矩陣乘法,或者在方塊402中,接收、取得及/或產生用於矩陣A和矩陣B的資料。
同時地,在決定方塊410中,計算設備可以決定降頻轉換的中間結果是否是可組合的。為了可組合,降頻轉換的中間結果可以是涉及下文的區塊的部分矩陣乘法的結果:該等區塊表示來自矩陣A和矩陣B中的一個的至少完整行,以及來自矩陣A和矩陣B中的另一個的至少完整列。如此一來,該等降頻轉換的中間結果可以表示:針對來自矩陣A和矩陣B中的一個的至少完整行和來自矩陣A和矩陣B中的另一個的至少完整列的矩陣乘法的降頻轉換的中間結果的完整集合。
回應於決定降頻轉換的中間結果是不可組合的(亦即,決定方塊410=「否」),計算設備可以繼續在方塊404中,採用全精度,針對矩陣A和矩陣B的資料區塊來實現部分矩陣乘法,或者在方塊402中,接收、取得及/或產生用於矩陣A和矩陣B的資料。
回應於決定降頻轉換的中間結果是可組合的(亦即,決定方塊410=「是」),在方塊412中,計算設備可以使用飽和加法,對該等可組合的降頻轉換的中間結果進行相加。該飽和加法可以被配置為對作為結果的矩陣的作為結果的輸出部分的大小進行限制,以維持輸出精度。在方塊414中,計算設備可以輸出作為結果的矩陣的輸出部分。
圖5圖示根據各個實施例,用於對部分矩陣乘法的中間結果進行降頻轉換的實施例方法500。可以利用在處理器(例如,圖1和圖2中的處理器14)中執行的軟體、利用通用硬體或者專用硬體(諸如,在包括其他單個元件的機器學習設備中執行軟體的處理器),在計算設備中實現方法500。為了涵蓋在各個實施例中啟用的替代配置,本文將實現方法500的硬體稱為「計算設備」。
可以將方法500實現成參照圖4所描述的方塊406的操作的一部分。在方塊502中,計算設備可以決定用於更低精度的降頻轉換的中間結果的最大可表示大小。該可表示大小可以取決於專用於儲存降頻轉換的中間結果的快取記憶體或暫存器空間的量。專用於儲存降頻轉換的中間結果的快取記憶體或暫存器空間的量,可以對於其中儲存的資料的大小施加限制,而可以減小降頻轉換的中間結果的大小,以適合於快取記憶體或暫存器的空間。可以將降頻轉換的中間結果劃分成降頻轉換的中間結果的保留部分和降頻轉換的中間結果的丟棄部分。降頻轉換的中間結果的保留部分可以包括用於更低精度的降頻轉換的中間結果的最大可表示大小,並表示中間結果中的可以適合於快取記憶體或暫存器的空間的部分。降頻轉換的中間結果的丟棄部分可以表示中間結果中的不能適合於快取記憶體或暫存器的空間的部分。
在可選方塊504中,計算設備可以經由將二進位「1」位元加到降頻轉換的中間結果的丟棄部分的最左位元,來對用於更低精度的降頻轉換的中間結果的最大可表示大小進行捨入。「0」和「1」的相加可以導致「1」的值,其可以與中間結果的丟棄部分進行一起丟棄,此舉導致對中間結果的保留部分向下捨入。「1」和「1」的相加可以導致具有進位位元「1」的「0」值。可以將該「0」位與中間結果的丟棄部分進行一起丟棄,將進位位元「1」加到保留的中間結果的最右位元上,此舉導致對保留的中間結果的保留部分的捨入。捨入可以減少僅僅對降頻轉換的中間結果進行截斷時的錯誤量。
在可選的決定方塊506中,計算設備可以決定將二進位「1」位元加到降頻轉換的中間結果的丟棄部分的最左位元上的結果(在可選方塊504中)是否導致進位位元。
回應於決定將二進位「1」位元加到降頻轉換的中間結果的丟棄部分的最左位元上(在可選方塊504中)導致進位位元(亦即,可選的決定方塊506=「是」),在可選方塊508中,計算設備可以將該進位位元加到保留的中間結果的保留部分的最右位元上。
在可選方塊508中,將進位位元加到保留部分的最右位元上之後,或者回應於決定將二進位「1」位元加到降頻轉換的中間結果的丟棄部分的最左位元上(在可選方塊504中)沒有導致進位位元(亦即,可選的決定方塊506=「否」),在方塊510中,計算設備可以移除該降頻轉換的中間結果的丟棄部分。可以經由將降頻轉換的中間結果的丟棄部分的位元移去,來完成對降頻轉換的中間結果的丟棄部分的移除。
圖6圖示用於在專用硬體(例如,電路或者硬體元件)中,實現各個實施例的示例性矩陣乘法元件600。在各個實施例中,矩陣乘法元件600可以實現參照圖4所描述的方法400和參照圖5所描述的方法500。矩陣乘法元件600可以是包括輸入緩衝區602、全精度矩陣乘法器604、降頻轉換器606、中間結果辨識器608、飽和加法器610和輸出緩衝區612的硬體元件或者電路。
輸入緩衝區602可以被配置為接收用於進行相乘的矩陣的部分資料。矩陣的部分資料表示矩陣的資料的一行或一列的全部或者一部分,例如,如本文參照圖3A-3F所描述的矩陣A 300的部分306a-306d和矩陣B 302的部分308a-308d。在各種實現中,可以將輸入緩衝區602劃分成被指定用於特定矩陣的資料的一些部分。在各種實現中,可以實現多個輸入緩衝區602,並指定其用於特定矩陣的資料。輸入緩衝區602可以保持資料的該等部分,直到全精度矩陣乘法器604準備好使用由輸入緩衝區602所保持的資料部分進行操作為止。
全精度矩陣乘法器604可以被配置為執行該等資料部分的相乘和相加,以產生全精度的中間結果,例如,參照圖3C所描述的中間結果314。由全精度矩陣乘法器604所實現的矩陣乘法可以表示:進行相乘的矩陣的所有資料的更大矩陣乘法的部分。
降頻轉換器606可以被配置為將中間結果314降頻轉換到相對於中間結果314的全精度的更低精度。降頻轉換器606可以將中間結果314的部分(例如,參照圖3C所描述的中間結果的丟棄部分320a-320c)移去,而保留中間結果314的其他部分(例如,參照圖3C所描述的中間結果的保留部分318a-318c)。降頻轉換可以導致具有最近可表示值的降頻轉換的中間結果(例如,截斷的中間結果的保留部分318a-318c)。此外,降頻轉換器606亦可以對中間結果的保留部分進行捨入,以產生降頻轉換的中間結果。
可以將降頻轉換的中間結果儲存在快取記憶體的一部分或者工作快取記憶體614(其可以是參照圖1所描述的記憶體16的一部分)中。中間結果辨識器608可以辨識能被組合以產生矩陣乘法的輸出部分的降頻轉換的中間結果,例如,參照圖3E和圖3F所描述的輸出部分322a-322d。中間結果辨識器608可以從工作快取記憶體614取得該等降頻轉換的中間結果。換言之,中間結果辨識器608可以取得矩陣的各個部分(該等各個部分表示該等矩陣中的一個矩陣的至少完整列和另一個矩陣的完整行)的矩陣乘法的降頻轉換的中間結果。
飽和加法器610可以接收可組合的降頻轉換的中間結果,並實現飽和加法以產生輸出部分。輸出緩衝區612可以保留飽和加法的結果,直到完成輸出部分為止,使得可以根據該輸出部分來構建矩陣乘法的結果矩陣的一部分。
在各種實現中,矩陣乘法元件600的不同元件可以將部分完成的或者完成的執行結果儲存在工作快取記憶體614中,並取得所儲存的執行結果以完成正在進行的任務或新任務的實現。在各種實現中,矩陣乘法元件600的不同元件可以包括用於儲存執行結果的專用緩衝區或暫存器,並且可以從該等專用緩衝區或暫存器中取得執行結果以完成正在進行的任務或新任務的實現。
在各種實現中,可以在處理器、晶片上系統或者計算設備中實現多個矩陣乘法元件600,以並行地執行矩陣的多個部分的矩陣乘法。其他矩陣乘法元件600可以使用來自不同矩陣乘法元件600的降頻轉換的中間結果,來產生與該等矩陣乘法元件600產生其降頻轉換的中間結果的資料部分有關的輸出部分。例如,第一矩陣乘法元件600可以針對第一矩陣的第一列資料的第一部分和第二矩陣的第一行資料的第一部分,產生第一降頻轉換的中間結果。第二矩陣乘法元件600可以針對第一矩陣的第一列資料的第二部分和第二矩陣的第一行資料的第二部分,產生第二降頻轉換的中間結果。為了完成第一矩陣的第一列和第二矩陣的第一行的矩陣乘法,第一矩陣乘法元件600可以使用第一降頻轉換的中間結果和第二降頻轉換的中間結果來產生輸出部分。
可以在各種各樣的計算系統中、利用處理器及/或專用硬體來實現各個實施例(其包括但不限於上文參照圖1-6所論述的實施例),其中該等計算系統可以包括在圖7中所圖示的適合於結合各個實施例使用的示例性行動計算設備。行動計算設備700可以包括耦合到觸控式螢幕控制器704和內部記憶體706的處理器702。處理器702可以是被指定用於通用或特定處理任務的一或多個多核積體電路。內部記憶體706可以是揮發性記憶體或非揮發性記憶體,亦可以是安全及/或加密記憶體,或者非安全及/或非加密記憶體,或者其任意組合。可以利用的記憶體類型的實例,包括但不限於:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。觸控式螢幕控制器704和處理器702亦可以耦合到觸控式螢幕面板712,例如,電阻式感測觸控式螢幕、電容感測觸控式螢幕、紅外線感測觸控式螢幕等等。另外,計算設備700的顯示器並不需要具有觸控式螢幕能力。
行動計算設備700可以具有用於發送和接收通訊的一或多個無線電訊號收發機708(例如,Peanut、Bluetooth(藍芽)、Zigbee、Wi-Fi、RF無線電裝置)和天線710,該一或多個無線電訊號收發機708和天線710彼此之間相耦合及/或耦合到處理器702。收發機708和天線710可以結合上文所提及的電路系統來使用,以實現各種無線傳輸協定堆疊和介面。行動計算設備700可以包括蜂巢網路無線數據機晶片716,後者經由蜂巢網路來實現通訊並耦合到處理器。
行動計算設備700可以包括耦合到處理器702的周邊設備連接介面718。周邊設備連接介面718可以被單一地配置為接受一種類型的連接,或者可以被配置為接受多種類型的實體和通訊連接、共用或專有連接(例如,USB、火線、Thunderbolt或PCIe)。此外,周邊設備連接介面718亦可以耦合到類似配置的周邊設備連接埠(未圖示)。
此外,行動計算設備700亦可以包括用於提供音訊輸出的揚聲器714。此外,行動計算設備700亦可以包括使用塑膠、金屬,或材料的組合所構成的殼體720,以包含本文所論述的所有元件或者一些元件。行動計算設備700可以包括耦合到處理器702的電源722,例如一次性或可再充電電池。此外,該可再充電電池亦可以耦合到周邊設備連接埠,以便從行動計算設備700之外的源接收充電電流。此外,行動計算設備700亦可以包括用於接收使用者輸入的實體按鍵724。此外,行動計算設備700亦可以包括用於打開和關閉行動計算設備700的電源按鍵726。
可以在各種各樣的計算系統中、利用處理器及/或專用硬體來實現各個實施例(其包括但不限於上文參照圖1-6所論述的實施例),其中該等計算系統可以包括各種各樣的行動計算設備,例如,如圖8中所示的膝上型電腦800。很多膝上型電腦包括觸控板觸摸介面817,後者用作該電腦的指向設備,故可以接收拖動、滾動和滑動手勢(其類似於上文所描述的在裝備有觸控式螢幕顯示器的計算設備上所實現的彼等手勢)。通常,膝上型電腦800將包括耦合到揮發性記憶體812和大容量非揮發性記憶體(例如,快閃記憶體的硬碟813)的處理器811。另外,電腦800可以具有用於發送和接收電磁輻射的一或多個天線808,該等天線808可以連接到無線資料鏈路及/或耦合到處理器811的蜂巢式電話收發機816。此外,電腦800亦可以包括耦合到處理器811的軟碟機814和壓縮光碟(CD)驅動器815。在筆記本配置中,電腦殼體包括全部皆耦合到處理器811的觸控板817、鍵盤818和顯示器819。該計算設備的其他配置可以包括(例如,經由通用序列匯流排(USB)輸入)耦合到處理器的電腦滑鼠或者軌跡球,如公眾所知道的,該等部件亦可以結合各個實施例來使用。
可以在各種各樣的計算系統中、利用處理器及/或專用硬體來實現各個實施例(其包括但不限於上文參照圖1-6所論述的實施例),其中該等計算系統可以包括用於將資料壓縮在伺服器快取記憶體中的各種各樣的商業可用的伺服器中的任何一種。圖9圖示了一種示例性伺服器900。通常,此種伺服器900包括耦合到揮發性記憶體902和大容量非揮發性記憶體(例如,磁碟機904)的一或多個多核處理器組件901。如圖9中所示,可以經由將多核處理器組件901插入到組裝的架中,來將其添加到伺服器900中。此外,伺服器900亦可以包括耦合到處理器901的軟碟機、壓縮光碟(CD)或數位多功能光碟(DVD)光碟機906。此外,伺服器900亦可以包括耦合到多核處理器組件901的網路存取埠903,以便與網路905(例如,耦合到其他廣播系統電腦和伺服器的區域網路、網際網路、公眾交換電話網路,及/或蜂巢資料網路(如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其他類型的蜂巢資料網路))建立網路介面連接。
可以利用諸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、結構化查詢語言(例如,Transact-SQL)、Perl之類的高級程式設計語言或者利用各種其他程式設計語言,來編寫用於在可程式設計處理器上執行以執行各個實施例的操作的電腦程式代碼或「程式碼」。如本案中所使用的電腦可讀取儲存媒體上所儲存的程式碼或程式,可以代表其格式是處理器可理解的機器語言代碼(例如,目標代碼)。
上述的方法描述和程序流程圖僅僅是用作為說明性實例來提供的,其並不意欲要求或者隱含著必須以所提供的順序來執行各個實施例的操作。如熟習此項技術者所應當理解的,可以以任何順序來執行上述的實施例中的操作順序。諸如「其後」、「隨後」、「接著」等等之類的詞語,並不意欲限制該等操作的順序;該等詞語僅僅只是用於引導讀者通讀該等方法的描述。此外,任何對請求項要素的單數引用(例如,使用冠詞「一個(a)」、「某個(an)」或者「該(the)」),不應被解釋為將該要素限制為單數形式。
結合各個實施例描述的各種說明性邏輯區塊、模組、電路和演算法操作均可以實現成電子硬體、電腦軟體或二者的組合。為了清楚地說明硬體和軟體之間的此種可交換性,上文對各種說明性元件、方塊、模組、電路和操作均圍繞其功能進行了整體描述。至於此種功能是實現成硬體還是實現成軟體,取決於特定的應用和對整體系統所施加的設計約束。熟習此項技術者可以針對每個特定應用,以變通的方式實現所描述的功能,但是,此種實現決策不應被解釋為使得背離請求項的範疇。
可以經由被設計用於執行本文所述功能的通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯設備、個別閘門或者電晶體邏輯裝置、個別硬體元件或者其任意組合,來實現或執行用於實現結合本文所揭示的實施例描述的各種說明性邏輯單元、邏輯區塊、模組和電路的硬體。通用處理器可以是微處理器,或者,該處理器亦可以是任何習知的處理器、控制器、微控制器或者狀態機。處理器亦可以實現為計算設備的組合,例如,DSP和微處理器的組合、複數個微處理器、一或多個微處理器與DSP核心的結合,或者任何其他此種配置。替代地,一些操作或方法可以由特定於給定的功能的電路系統來執行。
在一或多個實施例,本文所述功能可以用硬體、軟體、韌體或其任意組合的方式來實現。若利用軟體來實現,則可以將該等功能儲存成非暫時性電腦可讀取媒體或者非暫時性處理器可讀取媒體上的一或多個指令或代碼。本文所揭示的方法或演算法的操作,可以體現在處理器可執行軟體模組中,後者可以位於非暫時性電腦可讀取儲存媒體或處理器可讀取儲存媒體上。非暫時性電腦可讀取或處理器可讀取儲存媒體可以是電腦或處理器能夠存取的任何儲存媒體。舉例而言,但非做出限制,此種非暫時性電腦可讀取媒體或者處理器可讀取媒體可以包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其他光碟儲存、磁碟儲存或其他磁儲存設備,或者能夠用於儲存具有指令或資料結構形式的期望的程式碼並能夠由電腦進行存取的任何其他媒體。如本文所使用的,磁碟和光碟包括壓縮光碟(CD)、雷射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常磁性地複製資料,而光碟則用鐳射來光學地複製資料。上述的組合亦應當包括在非暫時性電腦可讀取媒體和處理器可讀取媒體的範疇之內。另外,方法或演算法的操作可以作為代碼及/或指令中的一者或任意組合或集合,位於非暫時性處理器可讀取媒體及/或電腦可讀取媒體上,其中該非暫時性處理器可讀取媒體及/或電腦可讀取媒體可以併入到電腦程式產品中。
為使任何熟習此項技術者能夠實施或者使用本發明,上文提供了圍繞所揭示的實施例的描述。對於熟習此項技術者而言,對該等實施例的各種修改是顯而易見的,並且,本文定義的整體原理亦可以在不脫離請求項的範疇的基礎上應用於其他實施例。因此,本案內容並不限於本文所圖示的實施例,而是符合與所附申請專利範圍和本文揭示的原理和新穎性特徵相一致的最廣範疇。
10‧‧‧計算設備
12‧‧‧晶片上系統(SoC)
14‧‧‧處理器
16‧‧‧記憶體
18‧‧‧通訊介面
20‧‧‧儲存記憶體介面
22‧‧‧通訊元件
24‧‧‧儲存記憶體
26‧‧‧天線
200‧‧‧處理器核心
201‧‧‧處理器核心
202‧‧‧處理器核心
203‧‧‧處理器核心
300‧‧‧矩陣A
302‧‧‧矩陣B
304‧‧‧作為結果的矩陣
306a‧‧‧區塊
306b‧‧‧區塊
306c‧‧‧區塊
306d‧‧‧區塊
308a‧‧‧區塊
308b‧‧‧區塊
308c‧‧‧區塊
308d‧‧‧區塊
310‧‧‧行
312‧‧‧列
314‧‧‧中間結果
316a‧‧‧降頻轉換的中間結果
316b‧‧‧降頻轉換的中間結果
316c‧‧‧降頻轉換的中間結果
318a‧‧‧保留部分
318b‧‧‧保留部分
318c‧‧‧保留部分
320a‧‧‧丟棄部分
320b‧‧‧丟棄部分
320c‧‧‧丟棄部分
322a‧‧‧輸出部分
322b‧‧‧輸出部分
322c‧‧‧輸出部分
322d‧‧‧輸出部分
400‧‧‧方法
402‧‧‧方塊
404‧‧‧方塊
406‧‧‧方塊
408‧‧‧方塊
410‧‧‧決定方塊
412‧‧‧方塊
414‧‧‧方塊
500‧‧‧方法
502‧‧‧方塊
504‧‧‧可選方塊
506‧‧‧決定方塊
508‧‧‧可選方塊
510‧‧‧方塊
600‧‧‧矩陣乘法元件
602‧‧‧輸入緩衝區
604‧‧‧全精度矩陣乘法器
606‧‧‧降頻轉換器
608‧‧‧中間結果辨識器
610‧‧‧飽和加法器
612‧‧‧輸出緩衝區
614‧‧‧工作快取記憶體
700‧‧‧行動計算設備
702‧‧‧處理器
704‧‧‧觸控式螢幕控制器
706‧‧‧內部記憶體
708‧‧‧無線電訊號收發機
710‧‧‧天線
712‧‧‧觸控式螢幕面板
714‧‧‧揚聲器
716‧‧‧蜂巢網路無線數據機晶片
718‧‧‧周邊設備連接介面
720‧‧‧殼體
722‧‧‧電源
724‧‧‧實體按鍵
726‧‧‧電源按鍵
800‧‧‧膝上型電腦
808‧‧‧天線
811‧‧‧處理器
812‧‧‧揮發性記憶體
813‧‧‧硬碟
814‧‧‧軟碟機
815‧‧‧壓縮光碟(CD)驅動器
816‧‧‧蜂巢式電話收發機
817‧‧‧觸控板
818‧‧‧鍵盤
819‧‧‧顯示器
900‧‧‧伺服器
901‧‧‧多核處理器組件
902‧‧‧揮發性記憶體
903‧‧‧網路存取埠
904‧‧‧磁碟機
905‧‧‧網路
906‧‧‧數位多功能光碟(DVD)光碟機
被併入本文並且構成本說明書一部分的附圖,圖示了各個實施例的示例性實施例,並且連同上文提供的概括描述以及下文提供的具體實施方式一起來用於解釋本發明的特徵。
圖1是圖示適合於實現一個實施例的計算設備的元件方塊圖。
圖2是圖示適合於實現一個實施例的示例性多核處理器的元件方塊圖。
圖3A-3F是圖示根據一個實施例的示例性矩陣乘法的示意圖。
圖4是圖示根據一個實施例,用於實現定點矩陣乘法的記憶體減少的方法的程序流程圖。
圖5是圖示根據一個實施例,用於實現對部分矩陣乘法的中間結果進行降頻轉換的方法的程序流程圖。
圖6是圖示根據一個實施例的示例性矩陣乘法元件的元件方塊圖。
圖7是圖示適合於結合各個實施例使用的示例性行動計算設備的元件方塊圖。
圖8是圖示適合於結合各個實施例使用的示例性行動計算設備的元件方塊圖。
圖9是圖示適合於結合各個實施例使用的示例性伺服器的元件方塊圖。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
400‧‧‧方法
402‧‧‧方塊
404‧‧‧方塊
406‧‧‧方塊
408‧‧‧方塊
410‧‧‧決定方塊
412‧‧‧方塊
414‧‧‧方塊

Claims (30)

  1. 一種用於一計算設備上的定點矩陣乘法的記憶體減少的方法,包括以下步驟: 採用全精度、使用一第一矩陣的定點資料的一第一區塊和一第二矩陣的定點資料的一第二區塊來實現一部分矩陣乘法,產生一第一中間結果;及經由將該第一中間結果的定點資料轉換成採用較低精度的定點資料,來對該第一中間結果進行降頻轉換,產生一第一降頻轉換的中間結果。
  2. 根據請求項1之方法,亦包括以下步驟: 儲存該第一降頻轉換的中間結果;採用全精度、使用該第一矩陣的定點資料的一第三區塊和該第二矩陣的定點資料的一第四區塊來實現一部分矩陣乘法,產生一第二中間結果,其中該第一區塊和該第三區塊表示該第一矩陣的至少一個完整行,並且該第二區塊和該第四區塊表示該第二矩陣的至少一個完整列;經由將該第二中間結果的定點資料轉換成採用較低精度的定點資料,來對該第二中間結果進行降頻轉換,產生一第二降頻轉換的中間結果;及使用飽和加法,將該第一降頻轉換的中間結果和該第二降頻轉換的中間結果進行相加,其中該飽和加法將一作為結果的矩陣的一結果輸出部分的一大小限制於一輸出精度。
  3. 根據請求項2之方法,亦包括以下步驟: 在一第一時間段期間,接收該定點資料的第一區塊和該定點資料的第二區塊;及在一第二時間段期間,接收該定點資料的第三區塊和該定點資料的第四區塊。
  4. 根據請求項1之方法,其中對該第一中間結果進行降頻轉換之步驟包括以下步驟: 決定該第一降頻轉換的中間結果的一最大可表示大小;保留在大小上等於或者小於該第一降頻轉換的中間結果的該最大可表示大小的該第一中間結果的一保留部分;及移除該第一中間結果的一丟棄部分,該第一中間結果的該丟棄部分包括該第一中間結果中不能容納於該第一降頻轉換的中間結果的該最大可表示大小的一部分。
  5. 根據請求項4之方法,其中決定該第一降頻轉換的中間結果的該最大可表示大小之步驟包括以下步驟:決定能夠用於儲存該第一降頻轉換的中間結果的記憶體的一量。
  6. 根據請求項4之方法,亦包括以下步驟: 執行1與該第一中間結果的該丟棄部分的一最左位元的一二進位加法;決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法的一結果是否導致一進位位元;及回應於決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法導致一進位位元,將該進位位元加到該第一中間結果的該保留部分的一最右位元上。
  7. 根據請求項1之方法,其中對該第一中間結果進行降頻轉換之步驟包括以下步驟:使用等於一輸出精度的該較低精度,對該第一中間結果進行降頻轉換。
  8. 一種被配置用於定點矩陣乘法的記憶體減少的矩陣乘法元件,該矩陣乘法元件被配置為執行包括以下各項的操作: 採用全精度、使用一第一矩陣的定點資料的一第一區塊和一第二矩陣的定點資料的一第二區塊來實現一部分矩陣乘法,產生一第一中間結果;及經由將該第一中間結果的定點資料轉換成採用較低精度的定點資料,來對該第一中間結果進行降頻轉換,產生一第一降頻轉換的中間結果。
  9. 根據請求項8之矩陣乘法元件,其中該矩陣乘法元件被配置為執行亦包括以下各項的操作: 儲存該第一降頻轉換的中間結果;採用全精度、使用該第一矩陣的定點資料的一第三區塊和該第二矩陣的定點資料的一第四區塊來實現一部分矩陣乘法,產生一第二中間結果,其中該第一區塊和該第三區塊表示該第一矩陣的至少一個完整行,並且該第二區塊和該第四區塊表示該第二矩陣的至少一個完整列;經由將該第二中間結果的定點資料轉換成採用較低精度的定點資料,來對該第二中間結果進行降頻轉換,產生一第二降頻轉換的中間結果;及使用飽和加法,將該第一降頻轉換的中間結果和該第二降頻轉換的中間結果進行相加,其中該飽和加法將一作為結果的矩陣的一結果輸出部分的一大小限制於一輸出精度。
  10. 根據請求項9之矩陣乘法元件,其中該矩陣乘法元件被配置為執行亦包括以下各項的操作: 在一第一時間段期間,接收該定點資料的第一區塊和該定點資料的第二區塊;及在一第二時間段期間,接收該定點資料的第三區塊和該定點資料的第四區塊。
  11. 根據請求項8之矩陣乘法元件,其中該矩陣乘法元件被配置為執行操作,使得對該第一中間結果進行降頻轉換包括: 決定該第一降頻轉換的中間結果的一最大可表示大小;保留在大小上等於或者小於該第一降頻轉換的中間結果的該最大可表示大小的該第一中間結果的一保留部分;及移除該第一中間結果的一丟棄部分,該第一中間結果的該丟棄部分包括該第一中間結果中不能容納於該第一降頻轉換的中間結果的該最大可表示大小的一部分。
  12. 根據請求項11之矩陣乘法元件,其中該矩陣乘法元件被配置為執行操作,使得決定該第一降頻轉換的中間結果的該最大可表示大小包括:決定能夠用於儲存該第一降頻轉換的中間結果的記憶體的一量。
  13. 根據請求項11之矩陣乘法元件,其中該矩陣乘法元件被配置為執行亦包括以下各項的操作: 執行1與該第一中間結果的該丟棄部分的一最左位元的一二進位加法;決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法的一結果是否導致一進位位元;及回應於決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法導致一進位位元,將該進位位元加到該第一中間結果的該保留部分的一最右位元上。
  14. 根據請求項8之矩陣乘法元件,其中該矩陣乘法元件被配置為執行操作,使得對該第一中間結果進行降頻轉換包括:使用等於一輸出精度的該較低精度,對該第一中間結果進行降頻轉換。
  15. 根據請求項8之矩陣乘法元件,其中該矩陣乘法元件包括被配置有處理器可執行指令,以執行以下各項的操作的一處理器: 採用全精度、使用該第一矩陣的該定點資料的第一區塊和該第二矩陣的該定點資料的第二區塊來實現該部分矩陣乘法,產生該第一中間結果;及經由將該第一中間結果的定點資料轉換成採用較低精度的定點資料,來對該第一中間結果進行降頻轉換,產生該第一降頻轉換的中間結果。
  16. 根據請求項8之矩陣乘法元件,其中該矩陣乘法元件包括: 一全精度矩陣乘法器,其被配置為執行以下的操作:採用全精度、使用該第一矩陣的該定點資料的第一區塊和該第二矩陣的該定點資料的第二區塊來實現該部分矩陣乘法,產生該第一中間結果;及一降頻轉換器,其被配置為執行以下的操作:經由將該第一中間結果的定點資料轉換成採用較低精度的定點資料,來對該第一中間結果進行降頻轉換,產生該第一降頻轉換的中間結果。
  17. 一種被配置用於定點矩陣乘法的記憶體減少的矩陣乘法元件,包括: 用於採用全精度、使用一第一矩陣的定點資料的一第一區塊和一第二矩陣的定點資料的一第二區塊來實現一部分矩陣乘法的構件,產生一第一中間結果;及用於經由將該第一中間結果的定點資料轉換成採用較低精度的定點資料,來對該第一中間結果進行降頻轉換的構件,產生一第一降頻轉換的中間結果。
  18. 根據請求項17之矩陣乘法元件,亦包括: 用於儲存該第一降頻轉換的中間結果的構件;用於採用全精度、使用該第一矩陣的定點資料的一第三區塊和該第二矩陣的定點資料的一第四區塊來實現一部分矩陣乘法的構件,產生一第二中間結果,其中該第一區塊和該第三區塊表示該第一矩陣的至少一個完整行,並且該第二區塊和該第四區塊表示該第二矩陣的至少一個完整列;用於經由將該第二中間結果的定點資料轉換成採用較低精度的定點資料,來對該第二中間結果進行降頻轉換的構件,產生一第二降頻轉換的中間結果;及用於使用飽和加法,將該第一降頻轉換的中間結果和該第二降頻轉換的中間結果進行相加的構件,其中該飽和加法將一作為結果的矩陣的一結果輸出部分的一大小限制於一輸出精度。
  19. 根據請求項18之矩陣乘法元件,亦包括: 用於在一第一時間段期間,接收該定點資料的第一區塊和該定點資料的第二區塊的構件;及用於在一第二時間段期間,接收該定點資料的第三區塊和該定點資料的第四區塊的構件。
  20. 根據請求項17之矩陣乘法元件,其中用於對該第一中間結果進行降頻轉換的構件包括: 用於決定該第一降頻轉換的中間結果的一最大可表示大小的構件;用於保留在大小上等於或者小於該第一降頻轉換的中間結果的該最大可表示大小的該第一中間結果的一保留部分的構件;及用於移除該第一中間結果的一丟棄部分的構件,該第一中間結果的該丟棄部分包括該第一中間結果中不能容納於該第一降頻轉換的中間結果的該最大可表示大小的一部分。
  21. 根據請求項20之矩陣乘法元件,其中用於決定該第一降頻轉換的中間結果的該最大可表示大小的構件包括:用於決定能夠用於儲存該第一降頻轉換的中間結果的記憶體的一量的構件。
  22. 根據請求項20之矩陣乘法元件,亦包括: 用於執行1與該第一中間結果的該丟棄部分的一最左位元的一二進位加法的構件;用於決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法的一結果是否導致一進位位元的構件;及用於回應於決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法導致一進位位元,將該進位位元加到該第一中間結果的該保留部分的一最右位元上的構件。
  23. 根據請求項17之矩陣乘法元件,其中用於對該第一中間結果進行降頻轉換的構件包括:用於使用等於一輸出精度的該較低精度,對該第一中間結果進行降頻轉換的構件。
  24. 一種其上儲存有處理器可執行指令的非暫時性處理器可讀取儲存媒體,該等處理器可執行指令被配置為使一計算設備的一處理器執行包括以下各項的操作: 採用全精度、使用一第一矩陣的定點資料的一第一區塊和一第二矩陣的定點資料的一第二區塊來實現一部分矩陣乘法,產生一第一中間結果;及經由將該第一中間結果的定點資料轉換成採用較低精度的定點資料,來對該第一中間結果進行降頻轉換,產生一第一降頻轉換的中間結果。
  25. 根據請求項24之非暫時性處理器可讀取儲存媒體,其中該等儲存的處理器可執行指令被配置為使該處理器執行亦包括以下各項的操作: 儲存該第一降頻轉換的中間結果;採用全精度、使用該第一矩陣的定點資料的一第三區塊和該第二矩陣的定點資料的一第四區塊來實現一部分矩陣乘法,產生一第二中間結果,其中該第一區塊和該第三區塊表示該第一矩陣的至少一個完整行,並且該第二區塊和該第四區塊表示該第二矩陣的至少一個完整列;經由將該第二中間結果的定點資料轉換成採用較低精度的定點資料,來對該第二中間結果進行降頻轉換,產生一第二降頻轉換的中間結果;及使用飽和加法,將該第一降頻轉換的中間結果和該第二降頻轉換的中間結果進行相加,該飽和加法將一作為結果的矩陣的一結果輸出部分的一大小限制於一輸出精度。
  26. 根據請求項25之非暫時性處理器可讀取儲存媒體,其中該等儲存的處理器可執行指令被配置為使該處理器執行亦包括以下各項的操作: 在一第一時間段期間,接收該定點資料的第一區塊和該定點資料的第二區塊;及在一第二時間段期間,接收該定點資料的第三區塊和該定點資料的第四區塊。
  27. 根據請求項24之非暫時性處理器可讀取儲存媒體,其中該等儲存的處理器可執行指令被配置為使該處理器執行操作,使得對該第一中間結果進行降頻轉換包括: 決定該第一降頻轉換的中間結果的一最大可表示大小;保留在大小上等於或者小於該第一降頻轉換的中間結果的該最大可表示大小的該第一中間結果的一保留部分;及移除該第一中間結果的一丟棄部分,該第一中間結果的該丟棄部分包括該第一中間結果中不能容納於該第一降頻轉換的中間結果的該最大可表示大小的一部分。
  28. 根據請求項27之非暫時性處理器可讀取儲存媒體,其中該等儲存的處理器可執行指令被配置為使該處理器執行操作,使得決定該第一降頻轉換的中間結果的該最大可表示大小包括:決定能夠用於儲存該第一降頻轉換的中間結果的記憶體的一量。
  29. 根據請求項27之非暫時性處理器可讀取儲存媒體,其中該等儲存的處理器可執行指令被配置為使該處理器執行亦包括以下各項的操作: 執行1與該第一中間結果的該丟棄部分的一最左位元的一二進位加法;決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法的一結果是否導致一進位位元;及回應於決定1與該第一中間結果的該丟棄部分的該最左位元的該二進位加法導致一進位位元,將該進位位元加到該第一中間結果的該保留部分的一最右位元上。
  30. 根據請求項24之非暫時性處理器可讀取儲存媒體,其中該等儲存的處理器可執行指令被配置為使該處理器執行操作,使得對該第一中間結果進行降頻轉換包括:使用等於一輸出精度的該較低精度,對該第一中間結果進行降頻轉換。
TW106105017A 2016-03-18 2017-02-16 用於定點矩陣乘法的記憶體減少方法 TW201734764A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/074,413 US9870341B2 (en) 2016-03-18 2016-03-18 Memory reduction method for fixed point matrix multiply

Publications (1)

Publication Number Publication Date
TW201734764A true TW201734764A (zh) 2017-10-01

Family

ID=58228560

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106105017A TW201734764A (zh) 2016-03-18 2017-02-16 用於定點矩陣乘法的記憶體減少方法

Country Status (5)

Country Link
US (1) US9870341B2 (zh)
EP (1) EP3430530B1 (zh)
CN (1) CN108780441B (zh)
TW (1) TW201734764A (zh)
WO (1) WO2017160448A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767097B (zh) * 2017-12-14 2022-06-11 大陸商中科寒武紀科技股份有限公司 集成電路芯片裝置及相關產品
TWI841631B (zh) * 2018-11-19 2024-05-11 美商葛如克公司 用於矩陣的空間地域轉換之方法及處理器電路
US12175287B2 (en) 2019-11-18 2024-12-24 Groq, Inc. Processor instruction dispatch configuration
US12222894B2 (en) 2017-09-15 2025-02-11 Groq, Inc. Compiler operations for tensor streaming processor
US12223436B2 (en) 2017-09-21 2025-02-11 Groq, Inc. Processor compiler for scheduling instructions to reduce execution delay due to dependencies
US12340300B1 (en) 2018-09-14 2025-06-24 Groq, Inc. Streaming processor architecture
US12411762B2 (en) 2017-09-15 2025-09-09 Groq, Inc. Memory design for a processor

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10644916B1 (en) 2002-05-14 2020-05-05 Genghiscomm Holdings, LLC Spreading and precoding in OFDM
US11431386B1 (en) 2004-08-02 2022-08-30 Genghiscomm Holdings, LLC Transmit pre-coding
US12224860B1 (en) 2014-01-30 2025-02-11 Genghiscomm Holdings, LLC Linear coding in decentralized networks
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply
WO2017201627A1 (en) * 2016-05-26 2017-11-30 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
CN106445471B (zh) * 2016-10-13 2018-06-01 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
US11010338B2 (en) * 2017-04-06 2021-05-18 Shanghai Cambricon Information Technology Co., Ltd Data screening device and method
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
CN108875956B (zh) * 2017-05-11 2019-09-10 广州异构智能科技有限公司 原生张量处理器
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit
US10243773B1 (en) 2017-06-30 2019-03-26 Genghiscomm Holdings, LLC Efficient peak-to-average-power reduction for OFDM and MIMO-OFDM
US10637705B1 (en) 2017-05-25 2020-04-28 Genghiscomm Holdings, LLC Peak-to-average-power reduction for OFDM multiple access
US11138291B2 (en) * 2017-09-26 2021-10-05 Oracle International Corporation Assymetric allocation of SRAM and data layout for efficient matrix multiplication
WO2019114842A1 (zh) * 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN110826712B (zh) * 2017-12-14 2024-01-09 中科寒武纪科技股份有限公司 神经网络处理器板卡及相关产品
CN109993275B (zh) * 2017-12-29 2021-01-29 华为技术有限公司 一种信号处理方法及装置
US11704125B2 (en) * 2018-02-13 2023-07-18 Cambricon (Xi'an) Semiconductor Co., Ltd. Computing device and method
US11630666B2 (en) * 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN108564168B (zh) * 2018-04-03 2021-03-09 中国科学院计算技术研究所 一种对支持多精度卷积神经网络处理器的设计方法
CN108509179B (zh) * 2018-04-04 2021-11-30 百度在线网络技术(北京)有限公司 用于检测人脸的方法、用于生成模型的装置
US11917604B2 (en) 2019-01-25 2024-02-27 Tybalt, Llc Orthogonal multiple access and non-orthogonal multiple access
US12206535B1 (en) 2018-06-17 2025-01-21 Tybalt, Llc Artificial neural networks in wireless communication systems
WO2019245931A1 (en) * 2018-06-17 2019-12-26 Genghiscomm Holdings, LLC Distributed radio system
CA3051429A1 (en) * 2018-08-08 2020-02-08 Applied Brain Research Inc. Digital circuits for evaluating neural engineering framework style neural networks
WO2020046859A1 (en) * 2018-08-27 2020-03-05 Neuralmagic Inc. Systems and methods for neural network convolutional layer matrix multiplication using cache memory
US10853067B2 (en) 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
US11175946B2 (en) * 2018-12-06 2021-11-16 Advanced Micro Devices, Inc. Pipelined matrix multiplication at a graphics processing unit
WO2020242898A1 (en) 2019-05-26 2020-12-03 Genghiscomm Holdings, LLC Non-orthogonal multiple access
US11436011B2 (en) * 2020-02-18 2022-09-06 Samsung Electronics Co., Ltd. Processing method and processing device with matrix multiplication computation
CN113298843B (zh) 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
CN114200822A (zh) * 2021-12-09 2022-03-18 常州同惠电子股份有限公司 全精度数字积分控制器的fpga实现方法
US20250004661A1 (en) * 2023-06-27 2025-01-02 Western Digital Technologies, Inc. Computational storage device with computation precision-defined fixed point data grouping and storage management

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1310422C (zh) * 2000-09-19 2007-04-11 卡本研究公司 采样/滤波电路以及使用其对输入信号进行调制的方法
US6901422B1 (en) * 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US7003542B2 (en) * 2002-01-02 2006-02-21 Intel Corporation Apparatus and method for inverting a 4×4 matrix
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US8417913B2 (en) * 2003-11-13 2013-04-09 International Business Machines Corporation Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages
US7725516B2 (en) * 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
EP2089812A2 (en) * 2006-06-26 2009-08-19 QUALCOMM Incorporated Efficient fixed-point approximations of forward and inverse discrete cosine transforms
RU2009102255A (ru) * 2006-06-26 2010-08-10 Квэлкомм Инкорпорейтед (US) Эффективные аппроксимации с фиксированной запятой для прямых и обратных дискретных косинусных преобразований
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US8984043B2 (en) * 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices
CN102375721B (zh) * 2010-08-23 2016-03-30 联想(北京)有限公司 一种矩阵乘法运算方法、图形处理器和电子设备
US8543633B2 (en) * 2010-09-24 2013-09-24 Lockheed Martin Corporation Modified Gram-Schmidt core implemented in a single field programmable gate array architecture
CN103975302B (zh) * 2011-12-22 2017-10-27 英特尔公司 矩阵乘法累加指令
WO2013101010A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Floating point scaling processors, methods, systems, and instructions
WO2014105154A1 (en) 2012-12-24 2014-07-03 Intel Corporation Systems, methods, and computer program products for performing mathematical operations
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US9400955B2 (en) 2013-12-13 2016-07-26 Amazon Technologies, Inc. Reducing dynamic range of low-rank decomposition matrices
GB2523342A (en) * 2014-02-20 2015-08-26 Ibm Conjugate gradient solvers for linear systems
US9622069B2 (en) * 2014-05-21 2017-04-11 Qualcomm Incorporated Systems and methods for multiple network access by mobile computing devices
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
CN104572011B (zh) * 2014-12-22 2018-07-31 上海交通大学 基于fpga的通用矩阵定点乘法器及其计算方法
CN104536943B (zh) * 2015-01-13 2017-08-29 江苏中兴微通信息科技有限公司 一种低除法量的矩阵求逆定点实现方法及装置
US20170061279A1 (en) * 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
US9870341B2 (en) * 2016-03-18 2018-01-16 Qualcomm Incorporated Memory reduction method for fixed point matrix multiply

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12222894B2 (en) 2017-09-15 2025-02-11 Groq, Inc. Compiler operations for tensor streaming processor
US12271339B2 (en) 2017-09-15 2025-04-08 Groq, Inc. Instruction format and instruction set architecture for tensor streaming processor
US12411762B2 (en) 2017-09-15 2025-09-09 Groq, Inc. Memory design for a processor
US12223436B2 (en) 2017-09-21 2025-02-11 Groq, Inc. Processor compiler for scheduling instructions to reduce execution delay due to dependencies
TWI767097B (zh) * 2017-12-14 2022-06-11 大陸商中科寒武紀科技股份有限公司 集成電路芯片裝置及相關產品
US12340300B1 (en) 2018-09-14 2025-06-24 Groq, Inc. Streaming processor architecture
TWI841631B (zh) * 2018-11-19 2024-05-11 美商葛如克公司 用於矩陣的空間地域轉換之方法及處理器電路
US12175287B2 (en) 2019-11-18 2024-12-24 Groq, Inc. Processor instruction dispatch configuration

Also Published As

Publication number Publication date
WO2017160448A1 (en) 2017-09-21
CN108780441A (zh) 2018-11-09
US9870341B2 (en) 2018-01-16
EP3430530B1 (en) 2022-11-02
US20170270073A1 (en) 2017-09-21
CN108780441B (zh) 2022-09-06
EP3430530A1 (en) 2019-01-23

Similar Documents

Publication Publication Date Title
CN108780441B (zh) 用于定点矩阵乘法的存储减少方法
KR101705926B1 (ko) 메모리 디바이스의 내부 프로세서의 조건부 연산
CN111915001B (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
US20170083827A1 (en) Data-Driven Accelerator For Machine Learning And Raw Data Analysis
Kim et al. Silent-PIM: Realizing the processing-in-memory computing with standard memory requests
CN111767986A (zh) 一种基于神经网络的运算方法及装置
US20200293866A1 (en) Methods for improving ai engine mac utilization
US11025271B2 (en) Compression of high dynamic ratio fields for machine learning
US9996345B2 (en) Variable length execution pipeline
CN106687937B (zh) 用于压缩算法的高速缓冲存储体扩展
CN109863476A (zh) 动态变量精度计算
US20220309314A1 (en) Artificial Intelligence Processor Architecture For Dynamic Scaling Of Neural Network Quantization
CN106415485B (zh) 用于动态语言中的内联高速缓存的硬件加速
EP3497563B1 (en) Fine-grained power optimization for heterogeneous parallel constructs
US20230058159A1 (en) Bayesian Bits Joint Mixed-Precision Quantization And Structured Pruning Using Decomposed Quantization And Bayesian Gates
US20220245457A1 (en) Neural Network Pruning With Cyclical Sparsity
US10078611B1 (en) Smart handling of input/output interrupts
CN105934742A (zh) 用于动态语言中的内联高速缓存的硬件加速
CN116931876A (zh) 矩阵运算系统、矩阵运算方法、卫星导航方法及存储介质
US20240303477A1 (en) Batch Softmax For 0-Label And Multilabel Classification
US20250224927A1 (en) Floating-point logarithmic number system scaling system for machine learning
US10261831B2 (en) Speculative loop iteration partitioning for heterogeneous execution
WO2022169497A1 (en) Neural network pruning with cyclical sparsity
CN121311872A (zh) 用于整数的卷积的具有加速的乘法器-累加器的神经引擎
CN117980898A (zh) 重叠操作的计算和数据存储的交错数据加载系统