TW202324143A - 用於加速倒數函數和倒數平方根函數的計算的系統和方法 - Google Patents

用於加速倒數函數和倒數平方根函數的計算的系統和方法 Download PDF

Info

Publication number
TW202324143A
TW202324143A TW111139991A TW111139991A TW202324143A TW 202324143 A TW202324143 A TW 202324143A TW 111139991 A TW111139991 A TW 111139991A TW 111139991 A TW111139991 A TW 111139991A TW 202324143 A TW202324143 A TW 202324143A
Authority
TW
Taiwan
Prior art keywords
value
reciprocal
exponent
mantissa
square root
Prior art date
Application number
TW111139991A
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 TW202324143A publication Critical patent/TW202324143A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5521Inverse root of a number or a function, e.g. the reciprocal of a Pythagorean sum

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

揭示了一種場可程式化閘極陣列(FPGA),其包括可配置互連組構,該可配置互連組構連接被配置為實施倒數函數資料路徑的複數個邏輯區塊,該倒數函數資料路徑包括:尾數計算階段,包括倒數函數資料路徑的尾數部分,該尾數計算階段被配置為:將輸入浮點值之M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元;基於該L個最高有效位元自倒數查找表查找斜率值及偏移值;及藉由將該斜率值乘以該M-L個最低有效位元以計算乘積並將該偏移值加至該乘積來計算輸出浮點值之輸出尾數分量;以及指數計算階段,該指數計算階段被配置為計算該輸出浮點值之輸出指數分量,該計算該輸出指數分量包括對該輸入浮點值之指數分量取反。

Description

用於加速倒數函數和倒數平方根函數的計算的系統和方法
本揭示案係關於用於加速倒數函數及倒數平方根函數的計算之系統及方法。
場可程式化閘極陣列(field programmable gate array; FPGA)為硬體設備,其包括邏輯區塊之陣列及在彼些邏輯區塊之間的可重新配置互連件。在Intel ®(或以前的Altera ®)產品中,此些邏輯區塊可被稱作自適應邏輯模組(Adaptive Logic Module; ALM),且在Xilinx ®產品中,此些可被稱作可配置邏輯區塊(Configurable Logic Block; CLB)。每一邏輯區塊可包括可程式化邏輯,諸如,用於執行自輸入至輸出之可配置邏輯映射的一或更多個查找表(look up table; LUT)、用於添加輸入值之加法器、用於臨時保持資料之暫存器,及其類似者。藉由配置檔案來程式化或配置FPGA會設定互連件(或互連「組構」)以將不同邏輯區塊連線在一起,藉此配置FPGA以執行該配置檔案(有時稱作「位元檔案」)所指定之特定功能。
與藉由通用處理器執行之軟體實施相比較而言,FPGA帶來在低位準(例如,在電路位準)實施計算之更高效能及更低功耗的益處。此與使用特殊應用積體電路(application specific integrated circuit; ASIC)(諸如,專門的協處理器,諸如,圖形處理單元(graphics processing unit; GPU)或神經加速器)之益處類似,其用以加速分別特定於電腦圖形及人工神經網路之操作。然而,設計及製造ASIC為漫長、昂貴之製程,前期固定成本很高。
因此,FPGA之一些應用包括(例如)硬體設計之原型化(其可能最終以ASIC實施)以及在其中設計及製造ASIC可能不合理(例如,由於計算的低數量或高度專業化)的情況下之硬體計算加速。另外,FPGA亦提供在不受困於固定硬體配置(如在ASIC的情形下)的情況下重新配置底層硬體(在「場」中)的靈活性,其中邏輯係在製造時直接在電路佈局中實施且因此幾乎不具有可重新配置性。一些雲端計算供應商提供對包括已連接FPGA之硬體個例(例如,伺服器)的存取,藉此允許使用者定製FPGA以執行計算性操作的硬體加速。
出於此些及其他考慮,舉出實例。另外,儘管已論述了相對特定之問題,但應理解,該等實例不應限於解決背景中所標識之特定問題。
提供本發明內容以便以簡化形式介紹一系列概念,以下在實施方式部分中更詳細描述該等概念。此發明內容並不意欲標識所主張標的之關鍵特徵或基本特徵,亦不意欲作為確定所主張標的之範疇的輔助。
本技術係關於用於使用諸如場可程式化閘極陣列(FPGA)之硬體來加速逆數函數(或倒數函數
Figure 02_image001
)及逆數平方根函數(或倒數平方根函數
Figure 02_image003
)的計算之系統和方法。本揭示案之一些特定實例係關於加速對低精度浮點數(例如,呈浮點格式之16位元浮點數,諸如,BFloat16、IEEE半精度16位元浮點FP16,或其類似者)之逆數函數及逆數平方根函數的計算。在本揭示案之一些實例中,對輸入執行逆數函數或逆數平方根函數的計算有效之近似值,其中函數的近似值與實際函數之間的差異對於近似值之特定使用情形而言足夠小(例如,足夠小而當在諸如深度神經網路之機器學習模型的訓練中使用近似值時會導致類似的模型收斂性質)。使用本揭示案之實例針對訓練神經網路的實驗表現出與使用逆數函數或逆數平方根函數之比較基本事實實施訓練之神經網路大體上相同的訓練特性(例如,訓練模型之收斂性及準確性)。
在隨附圖式及以下描述中闡述一或更多個態樣之細節。藉由閱讀以下詳細描述及查閱相關聯圖式,其他特徵及優勢將顯而易見。應理解,以下詳細描述僅為解釋性的,且並不限制如所要求之本發明。
以下詳細描述參考隨附圖式。在可能的情況下,在圖式及以下描述中使用相同元件符號來代表相同或相似之元件。雖然可描述本發明之態樣,但修改、改編及其他實施係可能的。舉例而言,可對圖式中所繪示之元件進行取代、添加或修改,且可藉由針對所揭示方法取代、重新排序或添加階段而修改本文所述方法。因此,以下詳細描述並不限制本發明,而實情為,由附加申請專利範圍限定本發明之適當範圍。實例可採取硬體實施、或完全軟體實施或組合了軟體及硬體態樣的實施之形式。因此不應在限制性含義上考慮以下詳細描述。
本技術係關於用於使用諸如場可程式化閘極陣列(FPGA)之硬體來加速數學函數的計算之系統及方法。FPGA之一種使用情形為加速與機器學習任務(諸如,電腦視覺(例如,影像分類、個例分割及其類似者)、自然語言處理(例如,轉換器模型)及其類似者)相關聯之計算。訓練機器學習模型(諸如,深度神經網路(DNN))對於小模型而言可能通常費數小時且對於大模型而言可能耗費數周或數月的計算時間。將計算上昂貴之操作自緩慢的通用處理器移至專門被配置為執行彼些昂貴數學運算之FPGA上可提供總計算時間的明顯減少及功耗的減少。
當訓練機器學習模型時,值通常彼此相除,諸如,當將值歸一化時。除法運算採取被除數運算元並將其除以除數運算元。此等效於將被除數運算元乘以除數運算元之乘法逆數(或倒數)。
舉例而言,在訓練機器學習模型中(尤其在包括深度神經網路之神經網路模型中)執行之一種常見運算為softmax函數或歸一化指數函數。softmax函數歸一化一組 K個正值或負值,以使得該等值中之每一者在自0至1之區間中(例如,在[0,1]之區間中),使得 K個值相加之總和為1。對於 K個值之輸入集或向量
Figure 02_image005
Figure 02_image007
),特定值
Figure 02_image009
之softmax
Figure 02_image011
可表述為:
Figure 02_image013
(1) 如上所見,計算值
Figure 02_image009
之softmax需要將值
Figure 02_image015
(其中
Figure 02_image017
為歐拉數(例如,
Figure 02_image019
))除以在值集合
Figure 02_image021
中之 K個值中的每一者之值的總和,此等效於將
Figure 02_image015
乘以
Figure 02_image021
的倒數。類似地,在高斯誤差線性單位(GELU)啟動函數中,針對張量列中之每一元素計算向量倒數
Figure 02_image023
。作為另一實例,在層歸一化(LayerNorm)層中,純量倒數用以計算值的向量之方差。
深度神經網路之一些部分或層亦可使用倒數平方根函數。舉例而言,倒數平方根可用以在計算softmax函數之前執行預縮放,且可用以計算深度神經網路之LayerNorm層中的標準差。
在訓練機器學習模型的過程期間,可計算倒數函數及/或倒數平方根函數很多次(例如,數十億次或數萬億次或更多次,取決於模型之大小及複雜性)。因此,將倒數函數及倒數平方根函數卸載至專門經設計以計算此些函數之處理器(例如,硬體加速器)會在此些機器學習任務中提供顯著的速度提高及能力效率提高。
如在背景部分中所述,場可程式化閘極陣列(FPGA)係由邏輯區塊之大陣列(例如,成千上萬個邏輯區塊)構成,在彼些區塊之間有可重新配置之互連件,其中FPGA可經程式化或被配置為使用開發者定義之配置檔案或位元檔案來執行特定功能,其中配置檔案為電子設計自動化(electronic design automation; EDA)軟體基於電路之功能描述所產生的輸出,該功能描述可以硬體描述語言(諸如,Verilog、SystemVerilog、VHDL)或更高級語言(諸如,System C)寫入。此些基本邏輯區塊在Intel ®或Altera ®產品中可稱作自適應邏輯模組(ALM),且在Xilinx ®產品中可稱作可配置邏輯區塊(CLB)。每一邏輯區塊通常包括一或更多個查找表(LUT)、1位元加法器及用於儲存資料之暫存器。
用以計算倒數函數及倒數平方根函數之一種方法為藉由二次插值或諸如牛頓-拉夫遜之遞歸方法。遞歸方法通常需要浮點乘法器及加法器,當被實施在不具有浮點硬巨集之FPGA上時,其會消耗大量硬體資源。基於插值之方法未必需要浮點單元,但通常使用三個定點乘法器及具有中等資料寬度之兩個定點加法器,且當被實施在不具有定點DSP巨集之FPGA上時硬體效率亦不高。
FPGA的一種使用情形為專門計算任務之硬體加速,諸如,頻繁用在機器學習(且特定言之為深度神經網路)中之特定數學函數。用以配置FPGA以計算此些專門數學函數(包括倒數及平方根)之比較方法的一些實例在Piñeiro,J-A等人之「使用極大極小二次插值器之高速函數逼近」(IEEE電腦期刊54.3 (2005):304-318)中有所描述。在Piñeiro等人所使用之方法中,使用二次插值器逼近倒數函數,其消耗Intel ®FPGA上之162個ALM。當實施16路向量倒數(例如,用於對16個值之向量並行運算)時,此轉化為約2,590個ALM。Piñeiro等人對倒數函數之實施亦需要11個週期的長潛時,此繼而需要FPGA中之額外邏輯以用於資料路徑中之延遲匹配。
如此,本揭示案之本技術係關於低面積且低潛時之架構,以便以低精度浮點格式(例如,BFloat16、IEEE半精度16位元浮點(FP16)、Nvidia TensorFloat、AMD fp24及Pixar PXR24)逼近逆數函數(或倒數函數
Figure 02_image001
))及/或逆數平方根函數(或倒數平方根函數
Figure 02_image003
)。此實現了softmax加速器靶向最先進轉換器模型(諸如,GPT-3、TNLG-XXL等)以及計算逆數及/或逆數平方根(例如,將值彼此相除或將值除以其他值之平方根)之其他大型人工神經網路的高效擴展。
雖然本文中在加速對呈BFloat16格式之值計算逆數(或倒數)函數及/或逆數平方根(或倒數平方根)函數的上下文中呈現本技術,但本揭示案之實例並不限於此,且可應用於對以其他低精度浮點格式(諸如,IEEE半精度16位元浮點(FP16)、Nvidia張量浮點、AMD fp24及Pixar PXR24,如上所述)表示之值計算倒數函數及倒數平方根函數。在一些實例中,術語「低精度浮點」用以代表其中尾數位元的數目小於23之浮點資料格式。
更詳細而言,本技術之一些態樣僅使用一次整數乘法及一次加法對低精度浮點值實施逆數函數及/或逆數平方根函數以執行線性插值,而不使用一或更多個浮點乘法器、不使用一或更多個浮點加法器且不使用二次插值,藉此實現相比FPGA中倒數函數的比較實施具有很低複雜度及相對少循環(較低潛時)之倒數函數及倒數平方根函數的實施。
第1圖為根據本揭示案之一個實例的場可程式化閘極陣列(FPGA)的一部分之示意性方塊圖,該場可程式化閘極陣列(FPGA)被配置為計算倒數函數及/或倒數平方根函數之近似值。在第1圖中所示實例中,經由FPGA之邏輯區塊的互連及程式化配置FPGA 10的一部分,以計算一或更多個函數之近似值,諸如,倒數函數、倒數平方根函數或其組合。更詳細而言,輸入浮點值 x被供應至FPGA 10之部分100(亦稱作資料路徑100,在各種實例中,其被配置為實施:倒數函數資料路徑;倒數平方根函數資料路徑;或組合的倒數函數及倒數平方資料路徑),以計算輸出浮點值 y,其中在倒數函數之情形下
Figure 02_image025
,且其中在倒數平方根函數之情形下
Figure 02_image027
。資料路徑100可用作FPGA 10內之較大計算電路的部件,諸如,作為並行佈置在FPGA的一部分中之 K個函數資料路徑中的一者,其被配置為計算對高達 K個值之輸入向量計算 K路運算(例如,將 K個不同值除以相同的值,或對 K個不同值計算函數,諸如,倒數或倒數平方根)。該運算繼而可為用於執行更高級別運算之資料處理路徑的分量,諸如,神經網路之訓練,連同其他運算,諸如,啟動函數、反向傳播中的梯度計算,及其類似者。
二進位浮點資料格式以類似於「科學計數法」之方式表示基於尾數(或顯數)、指數及符號之組合的數字:
Figure 02_image029
(2) 不同之處在於,二進位浮動表示法使用2為基數而非10為基數。為了便利及本文論述,浮點數在本文中可稱作具有一個符號位元、M個尾數位元及N個指數位元。
在第1圖中所示佈置中,輸入浮點值 x及輸出浮點值 y均呈BFloat16資料格式,其包括在位置[15]之一個符號位元(符號位元之值表示為 b 15 )、在位置[14:7]之八個指數位元(N=8)(指數位元之值表示為 b 14...b 7 )及在位置[6:0]之七個尾數位元(M=7)(尾數位元之值表示為 b 6...b 0 )。更具體而言,BFloat16資料格式仿照IEEE 754單精度二進位浮點格式(有時稱作binary32、float32或FP32),其中指數以偏移量-二進位格式表示,其中零偏移量(或「偏差」)為127(或二進位為0b011111),且因此恢復編碼值需要自資料格式中之資料中減去127:
Figure 02_image031
(3)
其他低精度浮點資料表示法可具有類似佈置,有可能具有不同的零偏移量且具有分配給指數及尾數分量之不同位元數目,以及不同的總位元數目(例如,少於16個位元或多於16個位元)。
返回參考第1圖,資料路徑100包括被配置為計算輸出 y之符號位元y sign的符號計算階段110、被配置為計算輸出 y之尾數分量y man的尾數計算階段120,及被配置為計算輸出 y之指數分量y exp的指數分量階段150。在一些實例中,尾數計算階段120包括一或更多個線性插值查找表,其儲存定義線段之斜率及偏移量,該等線段在尾數值的域上之對應子區間上逼近倒數函數及/或倒數平方根函數。以下將更詳細地描述由符號計算階段110、尾數計算階段120及指數計算階段150根據各種實例執行之操作。
第2圖為根據本揭示案之一個實例之描繪用於計算倒數函數的近似值之方法200的流程圖。
給定帶有尾數分量x man(對於BFloat16而言為x[6:0])、指數分量x exp(對於BFloat16而言為x[14:7])及符號分量x sign(對於BFloat16而言為x[15])之浮點數 x,x之值由以下給出:
Figure 02_image033
(4) 其中,基於浮點值之定義,
Figure 02_image035
x(recip(x))之倒數可重寫為:
Figure 02_image037
(5)
在操作202中,資料路徑將輸入浮點值x分割為其符號位元x sign、指數分量x exp及尾數分量x man。由於倒數函數保留了輸入之符號,所以直接將輸入x之符號位元x sign用作輸出y之符號位元y sign,且因此在計算倒數函數的情形下,符號計算110可藉由線路實施而不使用任何邏輯區塊。
如以上在方程式5中所示,可直接自浮點輸入值x之尾數分量x man計算x之倒數的尾數分量y man,與指數分量x exp無關。因此,在一些實例中,基於線性插值計算尾數部分x man之倒數或逆數。
在操作220中,資料路徑100使用線性插值計算輸入浮點值x之尾數分量x man的倒數。在操作222中,資料路徑100將尾數部分分割為兩個部分:尾數x man的L個最高有效位元(L MSB) xl及尾數x man的其餘M-L個最低有效位元(LSB) xr。在BFloat16之本實例中,尾數具有7個位元(M=7),且因此其餘位元或LSB xr具有7-L個位元。
第3圖為根據本揭示案之一個實例之被配置為計算倒數函數之輸出y的尾數分量y man及指數分量y exp之資料路徑的一部分之方塊圖。特定而言,第3圖圖示倒數函數資料路徑300之尾數部分302及倒數函數資料路徑300之指數部分304。如第3圖中所示,自輸入x之尾數x man中分割或提取L個最高有效位元xl及M-L個最低有效位元xr。
第4圖為根據本揭示案之一個實例之描繪倒數函數在域[1,2)上的線性插值之圖表。如上所述,在各種浮點資料格式中,尾數部分表示在[1,2)區間中之值,基於隱式前導位元1的約定,且因此線性插值足以在[1,2)之相同區間內計算1/x man
尾數部分x man之輸入域[1,2)被劃分成2 L個相等長度之子區間。每個區間由對應於區間左端之L個位元xl標識且與對應的預計算斜率k及預計算偏移量c相關聯。對於第i個子區間(表示為xl[i]),基於連接(xl[i], recip(xl[i]))及第(i+1)個子區間的對應點(表示為xl[i+1])-(xl[i+1], recip(xl[i+1])))的線段來計算斜率k及截距,其中,當預先計算斜率k及偏移量c時,以全精度計算recip(xl[i])之值(例如,FP32)。作為一個特定實例,若L=3,則將區間[1,2)劃分成各自長度為0.125之8個子區間。因此,xl[0]為(1.000) 2(或十進位的1.000),且xl[1]為(1.001) 2(或十進位的1.125)。在此情形下,(xl[0], recip(xl[0]))=(1.0, 1.0)且(xl[1], recip(xl[1])≈(1.125, 0.889)。
更精確而言,由尾數x man的L MSB xl標識之第i個區間的線段之斜率k[i]係根據以下計算的:
Figure 02_image039
(6) 且第i個區間之線段的偏移量c[i]係根據以下來計算的:
Figure 02_image041
(7)
可以更高精度(諸如,FP32)預計算此些斜率k及偏移量c值。此些高精度斜率k及偏移量c值分別量化為較低精度值kq及cq。歸因於倒數函數在區間[1,2)上之本質,k的所有值皆為負且具有小於1之絕對值。在斜率kq及偏移量cq的量化表示法中所使用之位元數目為可調諧參數,可根據應用之設計約束基於準確度與FPGA面積之間的折衷來設定該可調諧參數。在一個實例中,基於L=4之一些特定設計約束,kq[i]被量化為u0.4(四個位元),且cq[i]被量化為u0.8(八個位元)。
預計算之斜率及偏移值與其對應的xl值相關聯地儲存在線性插值查找表(LUT)中。在其中L=4且其中將kq[i]表示為四個位元且將cq[i]表示為八個位元之以上實例中,表的每個條目具有4個位元+8個位元=12位元,且存在2 4=16個條目。
因此,在操作224中,資料路徑100基於尾數x man之L MSB xl來查找儲存在倒數線性插值查找表310中之預計算的量化斜率kq[i]及量化偏移量cq[i]值,且在操作226中根據以下來計算輸入值x之尾數部分的倒數recip(x man)之線性近似值:
Figure 02_image043
Figure 02_image045
(8)
以此方式執行線性插值涉及使用整數乘法器320,其被配置為將量化斜率kq乘以輸入尾數之最低有效位元xr以計算乘積(prod)
Figure 02_image047
。特定而言,整數乘法器320將量化斜率kq中之位元數目乘以M-L個位元。在第3圖中所示實例中,整數乘法器320將4個位元乘以3個位元以產生7位元乘積。將固定移位器330應用於偏移量cq以產生移位偏移量cq_shft,且加法器340被配置為將移位偏移量cq_shft與乘積prod相加以計算12位元中間尾數和(u1.11)。12位元尾數的最高有效位元(sum[11])接著用以使用多工器342來選擇中間尾數之哪些位元被輸出作為輸出浮點值y之輸出尾數部分y man。在第3圖中所示實例中,當中間尾數之MSB為1時,位元sum[10:4]被輸出作為y man,且當中間尾數之MSB為0時,位元sum[9:3]被輸出作為y man
返回參考第2圖,在操作250中,資料路徑100基於輸入浮點值x之指數部分x exp計算輸出浮點值y之指數部分y exp
如上所示,當計算倒數時,將指數分量之值取反(例如,自
Figure 02_image049
Figure 02_image051
),其中值127對應於BFloat16資料格式中所定義之偏差。概念上對指數取反包括執行偏差調整252以使指數無偏差(例如,藉由自指數x exp減去127)、對無偏差指數取反254及執行偏差調整256(例如,藉由將127加至已取反的無偏差指數),以計算輸出y之輸出有偏差指數分量y exp。然而,在一些實例中,此些邏輯步驟可組合,以減少潛時。為了在操作250中對浮點輸入值x之指數分量x exp取反,考慮兩種情形:當x exp小於253時,則自x exp減去值253;否則自其自身減去x exp之值。在第5圖之方塊圖中,用於確定是否x exp<253之條件係由比較器計算,其輸出用以控制第一多工器或mux 350以在253的十進位值或作為中間值之x exp的值之間進行選擇。在一些實例中,如第3圖中所示,接著由第二mux 360使用中間尾數(sum[[11])的MSB在中間值exp2與固定值254之間進行選擇。在此些實例中,第二mux 360之輸出在本文中可稱作倒數指數調整值recip_exp_adj。在其中省略第二mux 360之一些實例中,第一mux 350之輸出在本文中可稱作倒數指數調整值recip_exp_adj(例如,其中第一mux 350之輸出直接連接至整數加法器370)。recip_exp_adj值(無論在一些實例中由第一mux 350輸出還是在其他實例中由第二mux輸出)皆作為輸入被供應給整數加法器370,該整數加法器370對x exp取反並將已取反的值加至recip_exp_adj值以計算輸出浮點值y之指數分量y exp
因此,本技術之態樣係關於用於經由線性插值來計算輸入浮點值的倒數(或逆數或乘法逆數)之技術,其中基於預計算的斜率以及尾數域(例如,[1,2))內區段或子區間的偏移量經由線性插值來計算尾數分量,其中基於尾數之L個最高有效位元來選擇特定區段或子區間,且其中藉由對輸入浮點值之指數分量取反來計算指數分量。在一些實例中,基於第3圖中所示之資料路徑的部分300實施第1圖中所示之資料路徑100的尾數計算階段120及指數計算階段150,該部分300被配置為分別計算輸出浮點值y之尾數部分y man及指數部分y exp
本技術之一些態樣係關於計算倒數平方根函數或逆數平方根函數。如上所述,給定帶有尾數分量x man(對於BFloat16而言為x[6:0])、指數分量x exp(對於BFloat16而言為x[14:7])及符號分量x sign(對於BFloat16而言為x[15])之浮點數 x,x之值由以下給出:
Figure 02_image033
(9) 其中,如前,基於浮點值之定義,
Figure 02_image035
x(rsqrt(x))之倒數平方根可重寫為:
Figure 02_image053
(10)
特定而言,藉由將無偏差指數分量除以二來計算指數分量之平方根,此可使用右移1來實施。然而,解決了兩種不同情形—有偏差指數x exp為偶數的情形或有偏差指數x exp為奇數的情形,以便在執行右移1時保留資訊。
第5圖為根據本揭示案之一個實例之描繪用於計算倒數平方根函數的近似值之方法500的流程圖。在操作502中,資料路徑100將輸入浮點值x分割為其符號位元x sign、指數分量x exp及尾數分量x man。第6圖為根據本揭示案之一個實例之被配置為計算倒數平方根函數之輸出的尾數分量及指數分量之資料路徑的一部分之方塊圖。特定而言,第6圖圖示倒數平方根函數資料路徑600之尾數部分602及倒數函數資料路徑600之指數部分604。因為倒數平方根函數對於負輸入值而言係未定義的(產生虛數),所以在一些實例中,指示負輸入值之符號位元會觸發符號計算110之資料路徑,其導致輸出浮點值y表示非數字(NaN)值。在一些其他實例中,符號位元被忽略並保留在輸出浮點值y中。
如以上在方程式10中所示,可直接自浮點輸入值x之尾數分量x man計算x之倒數平方根的尾數分量y man。然而,如方程式10中所示,為了將指數除以2,倒數平方根函數輸入的無偏差指數分量必須為偶數。因為偏差(127)為奇數,所以當有偏差指數x exp為奇數時,無偏差指數x exp-127為偶數,且當有偏差指數為偶數時,無偏差指數為奇數。
為了解決其中有偏差指數為偶數(且因而無偏差指數為奇數)之情形,無偏差指數可遞增(或增加)1,且尾數可預縮放2以進行補償(如由方程式10中之
Figure 02_image055
項所指示),以使得尾數表示在[2,4)而非[1,2)之範圍中的值。在此情形下,對輸入域[1,4)中之尾數值x man執行線性插值。
因此,在操作510中,資料路徑確定輸入浮點值x之指數分量x exp是否為偶數,以產生信號exp_is_even,諸如,藉由將指數分量之最低有效位元(x exp[0])供應給反相器605。
以與以上用於計算倒數的方式類似之方式,在操作520中,資料路徑100使用線性插值計算輸入浮點值x之尾數分量x man的倒數平方根。在操作522中,資料路徑100將尾數部分分割為兩個部分:尾數x man的L個最高有效位元(L MSB) xl及尾數x man的其餘M-L個最低有效位元(LSB) xr。
第6圖為根據本揭示案之一個實例之被配置為計算倒數平方根函數之輸出的尾數分量y man及指數分量y exp之資料路徑的一部分之方塊圖。如第3圖中所示,自輸入x之尾數x man中分割或提取L個最高有效位元xl及M-L個最低有效位元xr。
第7圖為根據本揭示案之一個實例之描繪倒數平方根函數在域[1,4)上的線性插值之圖表。如上所述,在各種浮點資料格式中,尾數部分表示在[1,2)區間中之值,基於隱式前導位元1的約定,且可基於指數部分為偶數還是奇數將尾數值預縮放2。因此,對於總區間[1,4),足以使線性插值在區間[1,2)以及區間[2,4)上計算
Figure 02_image057
由於輸入域較大,因此在一些實例中,區間[1,4)被劃分成2*2 L個區段(2 L+1個區段),其中第一區間[1,2)被劃分成第一2 L個子區間且第二區間[2,4)被劃分成第二2 L個子區間,如第7圖中所示。查找表儲存每個子間隔之經預計算的量化斜率kq[i]及偏移量cq[i],如由輸入浮點值x之尾數x man的L MSB xl以及exp_is_even值索引,其中exp_is_even值確定自第一區間[1,2)還是自第二區間[2,4)查找值。
更精確而言,由尾數x man的L MSB xl標識之第i個區間的斜率k[i]係根據以下計算的:
Figure 02_image059
(11) 且第i個區間之斜率c[i]係根據以下來計算的:
Figure 02_image061
(12)
如在倒數函數之情形下,可以更高精度(諸如,FP32)預計算此些斜率k及偏移量c值。此些高精度值k及c分別量化為較低精度值kq及cq。歸因於倒數平方根函數在區間[1,4)上之本質,k的所有值皆為負且具有小於1之絕對值。在斜率kq及偏移量cq的量化表示法中所使用之位元數目為可調諧參數,可根據應用之設計約束基於準確度與FPGA面積之間的折衷來設定該可調諧參數。在一個實例中,基於L=4之一些特定設計約束,kq[i]被量化為u0.4(四個位元),且cq[i]被量化為u0.8(八個位元)。預計算之斜率及偏移值與其對應的xl值及exp_is_even值相關聯地儲存在線性插值查找表(LUT)中。在其中L=4且其中kq[i]表示為四個位元且cq[i]表示為八個位元之以上實例中,表的每個條目具有4個位元+8個位元=12個位元,且存在2 4+1= 32個條目,其中16個條目對應於exp_is_even為0之情形且其餘16個條目對應於exp_is_even為1之情形,且其中每種情形下之16個條目是基於x man的4 MSB存取的。
因此,如第6圖中所示,在操作524中,來自反相器605之exp_is_even值及來自x man的L MSB xl作為輸入被供應至倒數平方根線性插值查找表610(指示為{exp_is_even,xl}),以查找對應的量化斜率kq(在第6圖中示為4位元值)及對應的量化偏移量cq(在第6圖中示為8位元值)。
以與以上用於計算輸入值x之尾數部分的倒數recip(x man)之線性近似值所述方式類似的方式,根據以下來計算輸入值x之尾數部分的倒數平方根rsqrt(x man)之線性近似值:
Figure 02_image063
Figure 02_image045
(13)
因此,在操作526中,將量化斜率kq供應至整數乘法器620,該整數乘法器620被配置為藉由x man的(M-L) LSB xr實施量化斜率kq以計算乘積prod(在第6圖中示為7位元)。將量化偏移量cq供應至固定移位器630以產生移位值cq_shift,其由加法器640加至乘積prod以計算中間尾數sum(u1.11)(在第6圖中示為12位元值)。12位元尾數的最高有效位元(sum[11])接著用以使用多工器642來選擇中間尾數之哪些位元被輸出作為輸出浮點值y之輸出尾數部分y man。在第6圖中所示實例中,當中間尾數之MSB為1時,位元sum[10:4]被輸出作為y man,且當中間尾數之MSB為0時,位元sum[9:3]被輸出作為y man
如第5圖中所示,在操作550中,資料路徑100基於輸入浮點值x之輸入指數分量x exp計算輸出浮點值y之輸出指數分量y exp。更詳細而言,在操作552中,資料路徑100基於指數值x exp之奇偶性來設定偏差調整值。此對應於基於x exp為偶數還是奇數來設定將方程式10中之指數中的分子設定為127-x exp還是128-x exp。此係在第6圖之實例中實施,其包括加法器650,該加法器650將exp_is_even的值與對應於十進位值380之9位元值(在第6圖中指示為9'd380)相加以計算中間指數值e xp1。更詳細而言,當計算輸出之有偏差指數時,y exp=127+(127-x exp)/2= (381-x exp)/2。然而,當exp_is_even時,藉由將尾數縮放-1來調整x exp,且因此輸出指數y exp=(380-x exp)/2。如此,加法器650輸出為380(在x exp為奇數的情形下)或381(在x exp為偶數的情形下)之適當常數exp1。
在操作554中,基於中間尾數和(sum[11])的最高有效位元進一步調整偏差,其在計算輸出y man之M位元尾數分量的同時在操作526中計算。多工器660在表示1(當sum[11]為1時)及0(當sum[11]為0時)之兩個不同的9位元值之間進行選擇,且加法器665將此值與中間指數值exp1相加以計算倒數平方根指數調整值rsqrt_exp_adj。在操作556中,加法器670接著對輸入浮點值x之指數分量x exp取反並將取反的值與值rsqrt_exp_adj相加以計算表示指數的取反版本之指數和值exp_sum。在操作558中,固定右移1 680接著將該值除以2以計算輸出浮點值y之指數分量y exp
在一些實例中,指數分量y exp的計算係使用兩個8位元加法器連同右移1來執行的,以執行倒數平方根中之指數部分的除以二。在一些實例中,基於第3圖中所示之資料路徑的部分600實施第1圖中所示之資料路徑100的尾數計算階段120及指數計算階段150,該部分600被配置為分別計算輸出浮點值y之尾數部分y man及指數部分y exp
考慮到第3圖及第6圖中所示之方塊圖分別實施倒數函數及倒數平方根函數,許多部件為共享的。兩個方塊圖之間的主要差異涉及不同的查找表(倒數線性插值查找表310儲存區間[1,2)上之倒數函數的斜率及偏移量與倒數平方根線性插值查找表610儲存區間[1,4)上之倒數平方根函數的斜率及偏移量),及在倒數平方根函數情形下將指數除以二,以及隨之而來的調整以確保將右移之值為偶數。因此,本技術之一些態樣係關於組合資料路徑,其基於選擇器輸入(rsqrt)選擇性地計算倒數函數或倒數平方根函數。
第8圖為根據本揭示案之一個實例之組合倒數及倒數平方根資料路徑的尾數部分800之方塊圖,該資料路徑被配置為計算如由函數選擇輸入所選擇之倒數函數或倒數平方根函數的輸出之尾數分量。第9圖為根據本揭示案之一個實例之組合倒數及倒數平方根資料路徑的指數部分900之方塊圖,該資料路徑被配置為計算如由函數選擇輸入所選擇之倒數函數或倒數平方根函數的輸出之指數分量。第10圖為根據本揭示案之一個實例之描繪用於根據函數選擇輸入而選擇性地計算倒數或倒數平方根的方法1000之流程圖。
在第8圖中所示實例中,線性插值查找表810包括大小為32x12位元及16x12位元之兩個表。當執行倒數時,選擇較小之16條目表,且當選擇rsqrt時選擇較大之32條目表,如由「rsqrt」輸入值所指示,其中rsqrt輸入值中之「1」指示選擇計算倒數平方根函數,且rsqrt輸入值中之「0」指示選擇計算倒數函數。如以上所論述,當查找rsqrt時,若有偏差指數為偶數(基於第9圖中所示之反相器902所計算的exp_is_even值),則存取上部16個條目;否則,存取下部16個條目。
乘法器820將4位元表輸出kq與輸入尾數的M-L LSB xr相乘以產生7位元乘積,該乘積與8位元表輸出cq之移位版本相加以形成12位元中間尾數值。中間尾數之MSB (sum[11])選擇其位元欄位[10:4]或[9:3]作為recip/rsqrt的最終7位元尾數y man
第9圖中所示之指數路徑包括2個9位元加法器及1個增量器,以涵蓋方程式5(127-x exp)及方程式10((127-x exp)/2或(128-x exp)/2)中所指定之三種可能條件中的一者。四個9位元多工器(930、940、960及967)基於計算係針對recip(當「rsqrt」為0時)還是針對倒數平方根(當「rsqrt」為1時);或當倒數平方根時輸入指數x exp之值為偶數或奇數來選擇適當資料資源以計算所得指數。舉例而言,多工器967用以基於函數選擇輸入rsqrt之值來選擇倒數平方根指數調整值rsqrt_exp_adj及倒數指數調整值recip_exp_adj。
因此,函數選擇輸入(「rsqrt」)用以選擇尾數計算階段及指數計算階段的部分以實施倒數函數資料路徑或倒數平方根函數資料路徑。舉例而言,當將rsqrt設定為0時,多工器930及940以及加法器970被包括在資料路徑中,且移位器980經設定以移位0位元,從而導致功能上等效於第3圖中所示電路之電路,其被配置為計算倒數函數之指數分量(例如,藉此選擇倒數函數資料路徑之指數部分)。作為另一實例,當將rsqrt設定為1時,反相器902、加法器950、多工器960、加法器965、加法器970及移位器980在資料路徑中,其中移位器980經設定以執行右移1,從而導致等效於第6圖中所示電路之電路,其被配置為計算倒數平方根函數之指數分量(例如,藉此選擇倒數平方根函數資料路徑之指數部分)。可使用額外多工器以在特定的輸入角情形下提供非數字(NaN)及無窮大(Inf)的產生(例如,在倒數平方根的情形下之負輸入值及x之輸入值被設定為0)。
參考第10圖,函數選擇輸入(例如,以上如在第8圖及第9圖中所示之「rsqrt」)用以在計算輸入浮點值x的倒數或計算倒數平方根之間進行選擇。當函數選擇輸入指示選擇倒數函數時,根據第2圖中所示方法200處理輸入浮點值x,其中函數選擇輸入rsqrt配置第8圖及第9圖中所示之電路以計算倒數函數。同樣,當函數選擇輸入指示選擇倒數平方根函數時,根據第5圖中所示方法500處理輸入浮點值x,其中函數選擇輸入rsqrt配置第8圖及第9圖中所示之電路以計算倒數平方根函數。
如上所述,根據本揭示案之各種實例的倒數及倒數平方根資料路徑的設計中之各種選擇可關於所使用之浮點資料格式的特定選擇而變化。此些參數包括L中使用之位元數目,其影響倒數線性插值查找表310、倒數平方根線性插值查找表610及/或組合的倒數及倒數平方根線性插值查找表810中之條目數目;在預計算的量化斜率kq及預計算的量化偏移量cq中所使用之位元數目,其影響查找表的大小及整數乘法器的大小;及其類似者。其他低精度浮點格式之實例包括:IEEE半精度16位元浮點(其具有1個符號位元、5個指數位元及10個尾數位元)、Nvidia TensorFloat(其具有1個符號位元、8個指數位元及10個尾數位元)、AMD fp24(其具有1個符號位元、7個指數位元及16個尾數位元)及Pixar PXR24(其具有1個符號位元、8個指數位元及15個尾數位元)。
如此,本揭示案之實例的態樣提供用於在FPGA中實施資料路徑以計算倒數函數、平倒數方根函數的近似值之架構,及具有用於在低精度浮點輸入上計算兩種函數的共享部件之組合電路。本揭示案之實例提供比FPGA中之倒數函數的比較實施涉及更少邏輯區塊之更簡單實施。作為一個實例,第3圖中所示實例僅包括三個多工器、一個常量移位器、一個整數乘法器、二個整數加法器,及具有12位元資料輸出之一個查找表。常量移位器可能不需要任何FPGA硬體資源(例如,可藉由將輸入供應至特定引腳來實施)。本揭示案之實例使用零浮點乘法器實施倒數函數及倒數平方根函數(例如,以執行任何二次插值),藉此實現勝於FPGA中之倒數函數的比較實施之顯著硬體資源節省(例如,使用更少邏輯區塊),並實現更低的潛時(更快的效能),因為查找表中之查找具有比定點乘法器更低的潛時(例如,如在基於二次插值之比較技術中所使用)。
第11圖為根據本揭示案之一個實例之描繪用於使用倒數函數或倒數平方根函數的近似值來訓練機器學習模型(諸如,深度神經網路(DNN))的方法1100之流程圖。在第11圖中所示實例中,機器學習模型訓練應用程式(參見(例如)在包括FPGA之計算設備上運行的機器學習訓練應用程式1352,如第13圖中所示)執行監督學習演算法,以基於標記輸入資料之集合來訓練機器學習模型。在第11圖中所示實例中,機器學習模型訓練應用程式在操作1110中接收標記訓練資料,並將訓練資料(例如,一批訓練資料)供應至當前機器學習模型以計算啟動(例如,將來自訓練資料之資料樣本的值之輸入向量供應至深度神經網路,其中深度神經網路的一層產生啟動)。
在操作1130中,機器學習模型訓練應用程式在 K次啟動上計算 K路倒數或 K路倒數平方根,作為計算深度神經網路之當前層的一部分。此可包括藉由將 K次啟動供應至功能資料路徑(例如,在FPGA中並行實施之 K個單獨的函數資料路徑)以根據以上關於第1圖、第2圖、第3圖、第5圖、第6圖、第8圖、第9圖及/或第10圖所述技術來計算輸出分數中的每一者之倒數或倒數平方根。(在第10圖中所示實例中,圖示組合的可選倒數或倒數平方根方法1000,但本揭示案之實施例並不限於此)。接著,在操作1132中, K個單獨值形成為輸出啟動之新向量。可接著將輸出啟動之新向量作為輸入供應至深度神經網路之下一層或可對應於深度神經網路之輸出。在操作1134中,機器學習模型訓練應用程式基於輸出啟動來計算機器學習模型之歸一化輸出分數(例如,因為使用倒數函數及/或倒數平方根函數的FPGA硬體加速之計算所計算出之輸出啟動被用在經由機器學習模型之資料前向傳播中)。可使用(例如)softmax函數來計算歸一化輸出分數,以歸一化由深度神經網路的輸出層所產生之啟動。
在操作1140中,機器學習模型訓練應用程式基於機器學習模型的輸出之歸一化分數(其中輸出係基於使用根據本技術之技術在深度神經網路的隱藏層或輸出層中計算的啟動來計算的)來更新機器學習模型,以產生經更新之機器學習模型(例如,在深度神經網路中,藉由將歸一化分數與訓練資料的標籤進行比較並經由梯度下降及反向傳播來更新神經元之間連接的權重)。在操作1150中,機器學習模型訓練應用程式確定訓練是否完成(例如,是否完成了最大數目個訓練間隔或訓練紀元,或機器學習模型之效能是否已收斂),且若非此,則訓練過程可藉由使用經更新之機器學習模型返回到操作1120來繼續。若訓練過程完成,則經更新之機器學習模型作為經訓練之機器學習模型被輸出並被儲存,且訓練過程結束。被儲存之經訓練的機器學習模型可接著被部署用於執行推理任務(例如,進行預測或估計),基於與訓練資料類似之即時資料(例如,自然語言輸入資料、影像,等),藉由用經訓練之機器學習模型處理即時資料來產生輸出(例如,輸入即時資料之分類或序列中被預測之下一個項)。
為了驗證根據本揭示案之實施例的架構之數值準確性,將(+∞,-∞)域上的所有BFloat16值作為輸入 x供應至基於關於第2圖及第3圖所述的上述參數之本揭示案的實施,以計算倒數函數之對應近似值。同樣,將[0,+∞)域上之所有BFloat16值作為輸入 x供應至基於關於第5圖及第6圖所述的上述參數之本揭示案的實施,以計算倒數平方根函數之對應近似值。接著將基於本揭示案之實例所計算的此些值與使用倒數函數及倒數平方根函數之標準參考實施以FP32資料格式計算的「基本事實」或參考值進行比較。
第12A圖為描繪與使用根據本揭示案之一個實例的系統及方法計算倒數函數相關聯之誤差與倒數函數的參考實施相比較之圖表。第12B圖為描繪與使用基於比較二次插值之技術計算倒數函數相關聯的誤差與第12A圖中所使用之倒數函數的同一參考實施相比較之圖表。
第12C圖為描繪與使用根據本揭示案之一個實例的系統及方法計算倒數平方根函數相關聯之誤差與倒數平方根函數的參考實施相比較之圖表。第12D圖為描繪與使用基於比較二次插值的技術(其中使用平方根函數及倒數函數之級聯,因為該比較技術不描述倒數平方根之特定實施)計算倒數平方根函數相關聯之誤差與第12C圖中所使用之倒數平方根函數的同一參考實施相比較之圖表。
如在第12A圖及第12C圖中所見,根據本技術實施之倒數函數及倒數平方根函數的誤差在約[-2,2] ulp(最小精度單位,代表兩個連續浮點數之間的間距)之範圍中。基於比較二次插值之技術實現了倒數函數在[-1,1] ulp範圍中及倒數平方根函數在[-1,2] ulp範圍中之誤差。
當訓練神經網路模型時,倒數函數及倒數平方根函數之額外1 ulp的誤差對準確性及收斂性具有可忽略不計之影響。特定而言,第12A圖中所示之2 ulp誤差僅針對整個域中之兩個特定樣本出現,而其餘輸入表現出與基於比較二次插值之技術的最大誤差相同之1 ulp誤差。
使用Piñeiro等人之方法的可比實施使用FPGA之大約160個ALM來實施倒數函數。相反,本揭示案之一個實例使用大約34個ALM來實施倒數函數,從而導致倒數函數所使用之FPGA面積減少大約79%。
類似地,使用Piñeiro等人之方法,藉由級聯平方根函數及倒數函數之可比實施消耗了FPGA之大約350個ALM。相反,本揭示案之一個實例使用大約38個ALM來實施倒數平方根函數,從而導致倒數平方根函數所使用之FPGA面積減少大約89%。
減少的面積要求轉化為在FPGA中計算倒數及倒數平方根函數之潛時的減少。特定而言,相比於Piñeiro等人之可比方法,一些實例實施在計算倒數函數時實現了72.7%的潛時減少。類似地,與Piñeiro等人所描述之級聯平方根及倒數資料路徑相比較而言,一些實例實施實現了81.8%的潛時減少。因此,相比於比較技術,本技術提供了明顯的功率、潛時及面積改良。
因此,相比於可比實施,本揭示案之實例明顯增大了倒數及倒數平方根函數之計算密度。本技術係關於在FPGA上應用線性插值來逼近呈低精度浮點資料格式的兩個超越函數(倒數及倒數平方根),並達到與在FPGA上使用涉及3個整數乘法器及2個加法器之二次插值實施類似數學函數的最先進技術可比之準確度水準。本技術之一些態樣係關於實施倒數及倒數平方根函數之組合或共享資料路徑,其中在兩種函數之間共享具有窄整數乘法器之共同尾數資料路徑,且其中兩個小尺寸之查找表(例如,倒數函數有16個條目,且倒數平方根函數有32個條目)使此技術在靶向具有豐富查找表(LUT)資源之FPGA時非常節省面積。
第13圖、第14A圖及第14B圖為相關聯描述,其提供對可在其中實踐本技術之實例的多種作業環境之論述。然而,關於第13圖、第14A圖及第14B圖所繪示並論述之設備及系統係出於實例及說明目的,且並不限制可用於實踐本文所述之本發明的態樣之大量計算設備配置。
第13圖為繪示可藉以實踐本揭示案之實例的計算設備1300之實體部件(亦即,硬體)的方塊圖。以下所述之計算設備部件可適合於運行機器學習模型之訓練過程或適合於使用經訓練之機器學習模型執行推理,如上所述。在基本配置中,計算設備1300可包括至少一個處理單元1302、場可程式化閘極陣列(FPGA)1303,及系統記憶體1304。在一些實例中,處理單元1302包括FPGA 1303(例如,處理單元1302可包括可經由設定互連件而重新配置之邏輯區塊的陣列)。在一些實例中,處理單元1302整合或內嵌至FPGA 1303中(例如,在一或更多個內嵌式「硬IP」CPU核心直接連接至FPGA 1303之互連件或組構及/或一或更多個內嵌式「軟IP」CPU核心使用FPGA 1303之邏輯區塊來實施的情形下)。取決於計算設備之配置及類型,系統記憶體1304可包括但不限於揮發性儲存器(例如,隨機存取記憶體)、非揮發性儲存器(例如,唯讀記憶體)、快閃記憶體,或此些記憶體之任何組合。系統記憶體1304可包括作業系統1305,及適合於運行軟體應用程式1350(諸如,機器學習模型訓練應用程式1352或用戶端應用程式1354)之一或更多個程式模組1306。舉例而言,作業系統1305可適合於控制計算設備1300之操作。另外,可結合圖形庫、其他作業系統或任何其他應用程式來實踐本發明之態樣,且並不限於任何特定的應用程式或系統。此基本配置在第13圖中由虛線1308內之彼些部件來繪示。計算設備1300可具有額外特徵或功能。舉例而言,計算設備1300亦可包括額外資料儲存設備(可移除及/或不可移除),諸如,磁碟、光碟或磁帶。此額外儲存器在第13圖中由可移除儲存設備1309及不可移除儲存設備1310來繪示。
如上所述,諸多程式模組及資料檔案可儲存在系統記憶體1304中。當在處理單元1302上執行時,程式模組1306可執行將計算任務卸載至FPGA 1303之過程。FPGA 1303可包括被配置為加速各種數學函數之計算的資料路徑,該等數學函數包括但不限於如以上關於第1圖、第2圖、第3圖、第4圖、第5圖、第6圖、第7圖、第8圖、第9圖及第10圖所述之倒數函數及倒數平方根函數的近似值之各種實例,以及使用一或更多個個資料路徑在資料向量上實施倒數函數之函數(例如,以單指令、多資料或與向量處理器相關聯之SIMD方式)。FPGA 1303可被配置為包括其他資料路徑,用於根據本發明之實例來實施其他數學函數。
另外,可在包括離散電子元件之電路、含有邏輯閘極之封裝或整合式電子晶片、利用微處理器之電路中或在含有電子元件或微處理器之單晶片上實踐本發明之實例。舉例而言,可經由系統單晶片(system-on-a-chip; SOC)來實踐本發明之實施例,其中可將第13圖中所繪示之部件中的每一者或許多整合至單個積體電路上。此SOC設備可包括一或更多個處理單元、場可程式化閘極陣列、圖形單元、通訊單元、系統虛擬化單元及各種應用功能,所有此些作為單個積體電路被整合(或「燒製」)至晶片基板上。當經由SOC操作時,本文描述之關於訓練機器學習模型(例如,深度神經網路)或執行涉及計算倒數函數及/或倒數平方根函數的計算之一些功能可經由與計算設備1300的其他部件一起整合在單個積體電路(晶片)上之專用邏輯來操作。亦可使用能夠執行諸如AND、OR及NOT之邏輯運算的其他技術來實踐本揭示案之實施例,包括但不限於機械、光學、流體及量子技術。另外,本發明之態樣可在通用電腦內或在任何其他電路或系統中實踐。
計算設備1300亦可具有一或更多個輸入設備1312,諸如,鍵盤、滑鼠、筆、聲音輸入設備、觸控式輸入設備,等。亦可包括(若干)輸出設備1314,諸如,顯示器、揚聲器、印表機,等。前述設備為實例,且可使用其他設備。在其中計算設備1300為伺服器之情形下,此些使用者輸入設備及使用者輸出設備通常不存在或不直接連接至計算設備1300。計算設備1300可包括一或更多個通訊連接1316,以允許與其他計算設備1318通訊。適當通訊連接1316之實例包括但不限於RF傳輸器、接收器及/或收發器電路系統;通用串列匯流排(universal serial bus; USB)、並行及/或串列埠。
如本文中所使用,術語電腦可讀媒體可包括電腦儲存媒體。電腦儲存媒體可包括在用於資訊儲存之任何方法或技術中實施之揮發性及非揮發性的、可移除的及不可移除的媒體,諸如,電腦可讀指令、資料結構、程式模組,或指定FPGA的配置以實施特定功能之配置檔案(「位元檔案」)。系統記憶體1304、可移除儲存設備1309及不可移除儲存設備1310皆為電腦儲存媒體實例(亦即,記憶體儲存器)。電腦儲存媒體可包括RAM、ROM、電可抹除可程式化唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、CD-ROM、數位通用光碟(digital versatile disk; DVD)或其他光學儲存器、磁帶盒、磁帶、磁碟儲存器或其他磁性儲存設備,或可用以儲存資訊並可由計算設備1300存取之任何其他製品。任何此種電腦儲存媒體可為計算設備1300的一部分。電腦儲存媒體不包括載波或其他傳播之資料信號。
通訊媒體可由電腦可讀指令、資料結構、程式模組或經調變資料信號中之其他資料(諸如,載波或其他輸送機制)來體現,且包括任何資訊傳遞媒體。術語「經調變資料信號」可描述一種信號,該信號具有以將資訊編碼在該信號中之方式設定或改變的一或更多個特性。藉助於實例且並非限制,通訊媒體可包括有線媒體(諸如,有線網路或直接有線連接),及無線媒體(諸如,聲學、射頻(radio frequency; RF)、紅外線及其他無線媒體)。
第14A圖及第14B圖繪示可藉以實踐本發明之態樣的行動計算設備1400,例如,行動電話、智慧型電話、平板個人電腦、膝上型電腦及其類似者。參考第14A圖,繪示用於實施該等態樣之行動計算設備1400的實例。在基本配置中,行動計算設備1400為具有輸入元件及輸出元件之手持型電腦。行動計算設備1400通常包括顯示器1405及一或更多個輸入按鈕1410,該一或更多個輸入按鈕1410允許使用者將資訊鍵入行動計算設備1400中。行動計算設備1400之顯示器1405亦可充當輸入設備(例如,觸控式螢幕顯示器)。可選側輸入元件1415(若包括)允許進一步的使用者輸入。側輸入元件1415可為旋轉開關、按鈕或任何其他形式之手動輸入元件。在替代實例中,行動計算設備1400可併入有更多或更少輸入元件。舉例而言,顯示器1405在一些實例中可能並非觸控式螢幕。在替代實例中,行動計算設備1400為可攜式電話系統,諸如,蜂巢式電話。行動計算設備1400亦可包括可選小鍵盤1435。可選小鍵盤1435可為實體小鍵盤或在觸控式螢幕顯示器上產生之「軟」小鍵盤。在各種態樣中,輸出元件包括用於圖示圖形使用者介面(graphical user interface; GUI)之顯示器1405、視覺指示器1420(例如,發光二極體)及/或音訊換能器1425(例如,揚聲器)。在一些實例中,行動計算設備1400併入有振動換能器以向使用者提供觸覺反饋。在又一實例中,行動計算設備1400併入有輸入及/或輸出埠,諸如,音訊輸入(例如,麥克風插孔)、音訊輸出(例如,耳機插孔)及視訊輸出(例如,HDMI埠),用於將信號發送至外部設備或自外部設備接收信號。
第14B圖為繪示行動計算設備之一個實例的架構之方塊圖。亦即,行動計算設備1400可併入有系統(亦即,架構)1402以實施一些實例。在一個實例中,將系統1402實施為能夠運行一或更多個應用程式(例如,瀏覽器、電子郵件、日曆、聯繫人管理器、訊息用戶端、遊戲及媒體用戶端/播放器)之「智慧型電話」。在一些實例中,將系統1402整合為計算設備,諸如,整合式個人數位助理(personal digital assistant; PDA)及無線電話。如第14B圖中所示,系統1402進一步包括處理器1460、記憶體1462,該記憶體1462儲存可由處理器1460執行之作業系統1464。系統1402可進一步包括FPGA 1463,其可經配置(使用配置檔案或位元檔案)以實施用於加速數學運算之資料路徑,諸如,如以上根據本揭示案之各種實例所描述的倒數函數資料路徑及倒數平方根函數資料路徑。
一或更多個應用程式1450可被加載至記憶體1462中並在作業系統1464上運行或與作業系統1464相關聯。應用程式之實例包括電話撥號程式、電子郵件程式、個人資訊管理(personal information management; PIM)程式、文字處理程式、電子表格程式、網際網路瀏覽器程式、訊息傳遞程式、機器學習軟體(例如,用於再訓練模型及/或聯合機器學習),等等。系統1402亦包括在記憶體1462內之非揮發性儲存區域1468。非揮發性儲存區域1468可用以儲存在系統1402斷電時不應丟失之永久資訊。應用程式1450可在非揮發性儲存區域1468中使用並儲存資訊,諸如,電子郵件或由電子郵件應用程式所使用之其他訊息,及其類似者。同步應用程式(未圖示)亦駐存在系統1402上,且經程式化以與駐存在主機電腦上之對應同步應用程式交互,以使儲存在非揮發性儲存區域1468中之資訊與儲存在主機電腦處之對應資訊保持同步。如應瞭解,其他應用程式可被加載至記憶體1462中並在行動計算設備1400上運行。
系統1402具有電源供應器1470,其可被實施為一或更多個電池組。電源供應器1470可進一步包括外部電源,諸如,為電池組補充或充電之AC適配器或供電底座。
系統1402亦可包括無線電1472,其執行傳輸及接收射頻通訊之功能。無線電1472促進系統1402與「外部世界」之間經由通訊運營商或服務供應商的無線連接。在作業系統1464的控制下進行與至無線電1472之傳輸及自無線電1472之傳輸。換言之,無線電1472接收到之通訊可經由作業系統1464傳播至應用程式1450,且反之亦然。
視訊指示器1420可用以提供視訊通知及/或音訊介面1474可用於經由音訊換能器1425產生聲響通知。在所繪示實例中,視訊指示器1420為發光二極體(light emitting diode; LED)且音訊換能器1425為揚聲器。此些設備可直接耦接至電源供應器1470,使得當啟動時,即使處理器1460及其他部件可能關閉以節省電池電量,其亦會在通知機制所規定之持續時間內保持接通。LED可經程式化以無限期地保持接通,直至使用者採取行動來指示設備之通電狀態為止。音訊介面1474用以將可聽信號提供至使用者及自使用者接收可聽信號。舉例而言,除了耦接至音訊換能器1425以外,音訊介面1474亦可耦接至麥克風以接收可聽輸入,諸如,用以便於電話交談。系統1402可進一步包括視訊介面1476,其使得車載照相機1430之操作能夠記錄靜止影像、視訊流及其類似者。
實施系統1402之行動計算設備1400可具有額外特徵或功能。舉例而言,行動計算設備1400亦可包括額外資料儲存設備(可移除及/或不可移除),諸如,磁碟、光碟或磁帶。在第14B圖中藉由非揮發性儲存區域1468來繪示此額外儲存器。
由行動計算設備1400產生或擷取並經由系統1402儲存之資料/資訊可本端地儲存在行動計算設備1400上,如上所述,或該資料可被儲存在任何數目個儲存媒體上,該儲存媒體可由設備經由無線電1472或經由行動計算設備1400與相關聯於行動計算設備1400之單獨計算設備(例如,在分散式計算網路中之伺服器電腦,諸如,網際網路)之間的有線連接進行存取。如應瞭解,此資料/資訊可由行動計算設備1400經由無線電1472或經由分散式計算網路進行存取。類似地,根據熟知資料/資訊移送及儲存手段(包括電子郵件及協作資料/資訊共享系統),此類資料/資訊可容易地在計算設備之間移送以供儲存及使用。
根據一個實例,一種場可程式化閘極陣列(FPGA),其包括連接複數個邏輯區塊之可配置互連組構,該可配置互連組構及該等邏輯區塊被配置為實施倒數函數資料路徑,包括:尾數計算階段,包括倒數函數資料路徑的尾數部分,藉由該等邏輯區塊及該可配置互連組構實施,被配置為:將輸入浮點值之M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元;基於該L個最高有效位元自包括倒數查找表之線性插值查找表查找斜率值及偏移值;及藉由將該斜率值乘以該M-L個最低有效位元以計算乘積並將該偏移值加至該乘積來計算輸出浮點值之輸出尾數分量;以及指數計算階段,包括複數個加法器,藉由該等邏輯區塊及該可配置互連組構實施,被配置為計算輸出浮點值之輸出指數分量,該計算該輸出指數分量包括對輸入浮點值之指數分量取反。
該可配置互連組構及該等邏輯區塊可進一步被配置為實施倒數平方根函數資料路徑,其包括:尾數部分,藉由尾數計算階段之該等邏輯區塊及該可配置互連組構實施;及指數部分,藉由指數計算階段之該等邏輯區塊及該可配置互連組構實施,且該尾數計算階段及該指數計算階段可被配置為根據函數選擇輸入值在倒數函數資料路徑與倒數平方根函數資料路徑之間進行選擇。
倒數平方根函數資料路徑之指數部分可進一步被配置為對該輸入浮點值之該指數分量取反並將其除以二;以及倒數平方根函數資料路徑之尾數部分可被配置為在輸入浮點值之該M位元尾數分量的域內執行倒數平方根之線性插值。
倒數平方根函數資料路徑之指數部分可進一步被配置為:確定輸入浮點值之指數分量的奇偶性;基於指數分量之該奇偶性來計算指數總和值;及將該指數總和值除以二以計算輸出浮點值之輸出指數分量。
該線性插值查找表可進一步包括倒數平方根查找表,且倒數平方根函數資料路徑之尾數部分可進一步被配置為:基於該L個最高有效位元以及該輸入浮點值之該指數分量的該奇偶性,自該倒數平方根查找表查找該斜率值及該偏移值。
倒數平方根查找表可包括在[1,4)之域中的條目。
尾數計算階段可包括整數乘法器及加法器,該整數乘法器及該加法器係由倒數函數資料路徑之尾數部分及倒數平方根函數資料路徑之尾數部分共享。
尾數計算階段可進一步被配置為自線性插值查找表查找該斜率值及該偏移值,該線性插值查找表進一步包括倒數平方根查找表,基於該L個最高有效位元、該函數選擇輸入值及該輸入浮點值之該指數分量的奇偶性,且指數計算階段可進一步被配置為:基於輸入浮點值之指數分量的奇偶性及由尾數計算階段所計算之中間尾數值的最高有效位元來計算倒數平方根指數調整值;基於該中間尾數值之該最高有效位元來計算倒數指數調整值;基於函數選擇輸入值產生選自倒數平方根指數調整值及倒數指數調整值之指數調整值;基於該指數調整值對輸入浮點值之指數分量取反以計算指數總和值;及當該函數選擇輸入值指示倒數平方根函數時,將該指數總和值除以二以計算輸出浮點值之輸出指數分量。
根據一個實例,一種儲存配置檔案之電腦儲存媒體,該配置檔案指定包括可配置互連組構及複數個邏輯區塊之場可程式化閘極陣列(FPGA)的配置,其中基於該配置檔案進行配置之FPGA包括藉由可配置互連組構連接之邏輯區塊,實施:尾數計算階段,包括倒數函數資料路徑的尾數部分,藉由該等邏輯區塊及該可配置互連組構實施,被配置為:將輸入浮點值之M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元;基於該L個最高有效位元自包括倒數查找表之線性插值查找表查找斜率值及偏移值;及藉由將該斜率值乘以該M-L個最低有效位元以計算乘積並將該偏移值加至該乘積來計算輸出浮點值之輸出尾數分量;以及指數計算階段,包括複數個加法器,藉由該等邏輯區塊及該可配置互連組構實施,被配置為計算輸出浮點值之輸出指數分量,該計算該輸出指數分量包括對輸入浮點值之指數分量取反。
該配置檔案可進一步指定FPGA之該可配置互連組構及該等邏輯區塊以實施倒數平方根函數資料路徑,包括:尾數部分,藉由尾數計算階段之該等邏輯區塊及該可配置互連組構實施;及指數部分,藉由指數計算階段之該等邏輯區塊及該可配置互連組構實施,且該尾數計算階段及該指數計算階段可被配置為根據函數選擇輸入值在倒數函數資料路徑與倒數平方根函數資料路徑之間進行選擇。
該配置檔案可進一步配置倒數平方根函數資料路徑之指數部分以對該輸入浮點值之該指數分量取反並將其除以二;及該配置檔案可進一步配置倒數平方根函數資料路徑之尾數部分以在輸入浮點值之M位元尾數分量的域內執行倒數平方根之線性插值。
該配置檔案可進一步配置倒數平方根函數資料路徑之尾數部分以便:確定輸入浮點值之指數分量的奇偶性;基於指數分量之該奇偶性來計算指數總和值;及將該指數總和值除以二以計算輸出浮點值之輸出指數分量。
該配置檔案可進一步配置線性插值查找表以進一步包括倒數平方根查找表;及該配置檔案可進一步配置倒數平方根函數資料路徑之尾數部分以便:基於該L個最高有效位元以及該輸入浮點值之該指數分量的該奇偶性,自該倒數平方根查找表查找該斜率值及該偏移值。
該配置檔案可進一步配置倒數平方根查找表以包括在[1,4)之域中的條目。
該配置檔案可進一步配置該尾數計算階段以包括整數乘法器及加法器,該整數乘法器及該加法器係由倒數函數資料路徑之尾數部分及倒數平方根函數資料路徑之尾數部分共享。
該配置檔案可進一步配置尾數計算階段以自線性插值查找表查找該斜率值及該偏移值,該線性插值查找表進一步包括倒數平方根查找表,基於該L個最高有效位元、該函數選擇輸入值及該輸入浮點值之該指數分量的奇偶性,且該配置檔案可進一步配置指數計算階段以便:基於輸入浮點值之指數分量的奇偶性及由尾數計算階段所計算之中間尾數值的最高有效位元來計算倒數平方根指數調整值;基於該中間尾數值之該最高有效位元來計算倒數指數調整值;基於函數選擇輸入值產生選自倒數平方根指數調整值及倒數指數調整值之指數調整值;基於該指數調整值對輸入浮點值之指數分量取反以計算指數總和值;及當該函數選擇輸入值指示倒數平方根函數時,將該指數總和值除以二以計算輸出浮點值之輸出指數分量。
根據一個實例,一種用於加速包括連接複數個邏輯區塊之可配置互連組構的場可程式化閘極陣列(FPGA)中之計算的方法,該方法包括:藉由該可配置互連組構及該複數個邏輯區塊所實施之FPGA的尾數計算階段將輸入浮點值之M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元;由該尾數計算階段基於該L個最高有效位元自包括倒數查找表之線性插值查找表查找斜率值及偏移值;由該尾數計算階段藉由用該尾數計算階段之整數加法器將斜率值乘以M-L個最低有效位元以計算乘積並將偏移值加至該乘積而計算輸出浮點值之輸出尾數分量;及藉由該可配置互連組構及該複數個邏輯區塊所實施之指數計算階段來計算輸出浮點值之輸出指數分量,該計算該輸出指數分量包括對輸入浮點值之指數分量取反。
該可配置互連組構及該等邏輯區塊可進一步被配置為實施倒數平方根函數資料路徑,其包括:尾數部分,藉由尾數計算階段之該等邏輯區塊及該可配置互連組構實施;及指數部分,藉由指數計算階段之該等邏輯區塊及該可配置互連組構實施,該線性插值查找表可進一步包括倒數平方根查找表,且該方法可進一步包括:根據函數選擇輸入值在倒數函數資料路徑與倒數平方根函數資料路徑之間進行選擇;當函數選擇輸入值指示倒數平方根函數時,將輸入浮點值之指數分量除以二;及當函數選擇輸入值指示倒數平方根函數時,基於L個最高有效位元以及輸入浮點值之指數分量的奇偶性,自倒數平方根查找表查找斜率值及偏移值。
倒數平方根查找表可包括在[1,4)之域中的條目。
該方法可進一步包括訓練機器學習模型,包括:藉由包括處理器、記憶體及FPGA之計算設備所執行的機器學習模型訓練應用程式接收經標記之訓練資料;藉由該機器學習模型訓練應用程式將該訓練資料供應至該機器學習模型之第一層以計算為 K次之複數次第一層啟動;計算機器學習模型之第二層的複數次第二層啟動,該計算該複數次第二層啟動包括將為 K次之該複數次第一層啟動供應至FPGA之尾數計算階段及指數計算階段,該複數次第二層啟動包括該 K次第一層啟動之 K個倒數及該 K次第一層啟動之 K個倒數平方根;回應於該訓練資料計算機器學習模型之輸出的複數個歸一化分數;基於該等歸一化分數更新機器學習模型;及輸出經更新之機器學習模型,作為經訓練之機器學習模型。
以上參考根據本發明之態樣的方法、系統及電腦程式產品之方塊圖及/或操作說明描述了(例如)本發明之態樣。方塊中所註明之功能/動作可能不按如任何流程圖中所示之次序發生。舉例而言,取決於所涉及之功能/動作,連續圖示之兩個方塊實際上可能大體上同時執行,或該等方塊有時可能以相反次序執行。另外,如本文中所使用且在申請專利範圍中,片語「要素A、要素B或要素C中之至少一者」旨在傳達如下各者中之任一種:要素A、要素B、要素C、要素A及B、要素A及C、要素B及C,及要素A、B及C。
對本申請案中所提供之一或更多個實例的描述及說明並不意欲以任何方式限制或約束如所主張之本發明的範疇。本申請案中所提供之態樣、實例及細節被視為足以傳達所有權並使他人能夠作出並使用所主張之發明的最佳模式。所主張之發明不應被解釋為限於本申請案中所提供之任何態樣、實例或細節。無論組合地還是單獨地圖示並描述,各種特徵(結構及方法)旨在選擇性地被包括或省略以產生具有特定特徵集合之實例。在已具備對本申請案之描述及說明的情況下,熟習此項技術者可設想在本申請案中體現之一般性發明概念的更廣泛態樣之精神內的變化、修改及替代實例,其不脫離所主張之發明的更廣泛範疇。
10:FPGA 100:資料路徑 110:符號計算階段 120:尾數計算階段 150:指數計算階段 200:方法 202:操作 220:操作 222:操作 224:操作 226:操作 250:操作 252:偏差調整 254:對無偏差指數取反 256:偏差調整 300:倒數函數資料路徑 302:尾數部分 304:指數部分 310:倒數線性插值查找表 320:整數乘法器 330:固定移位器 340:加法器 342:多工器 350:第一多工器 360:第二mux 370:整數加法器 500:方法 502:操作 510:操作 520:操作 522:操作 524:操作 526:操作 550:操作 552:操作 554:操作 556:操作 558:操作 600:倒數平方根函數資料路徑 602:尾數部分 604:指數部分 605:反相器 610:倒數平方根線性插值查找表 620:整數乘法器 630:固定移位器 640:加法器 642:多工器 650:加法器 660:多工器 665:加法器 670:加法器 680:固定右移1 800:尾數部分 810:線性插值查找表 820:乘法器 900:指數部分 902:反相器 930:多工器 940:多工器 950:加法器 960:多工器 965:加法器 967:多工器 970:加法器 980:移位器 1000:方法 1100:方法 1110:操作 1120:操作 1130:操作 1132:操作 1134:操作 1140:操作 1150:操作 1300:計算設備 1302:處理單元 1303:場可程式化閘極陣列(FPGA) 1304:系統記憶體 1305:作業系統 1306:程式模組 1308:虛線 1309:可移除儲存設備 1310:不可移除儲存設備 1312:輸入設備 1314:輸出設備 1316:通訊連接 1318:計算設備 1350:軟體應用程式 1352:機器學習訓練應用程式 1354:用戶端應用程式 1400:行動計算設備 1402:系統 1405:顯示器 1410:輸入按鈕 1415:可選側輸入元件 1420:視覺指示器 1425:音訊換能器 1430:車載照相機 1435:可選小鍵盤 1450:應用程式 1460:處理器 1462:記憶體 1463:FPGA 1464:作業系統 1468:非揮發性儲存區域 1470:電源供應器 1472:無線電 1474:音訊介面 1476:視訊介面 cq:低精度偏移量 exp1:中間指數值 exp2:中間指數值 kq:低精度斜率 ones:一 prod:乘積 x:輸入浮點數 X exp:指數分量 X man:尾數分量 X sign:符號分量 xl:L個最高有效位元(L MSB) xr:M-L個最低有效位元(LSB) y:輸出浮點數 y exp:指數分量 y man:尾數分量 y sign:符號分量
隨附圖式繪示本發明之各種態樣,其併入本文揭示案中並構成本揭示案的一部分。在該等圖式中:
第1圖為根據本揭示案之一個實例之場可程式化閘極陣列(FPGA)的一部分之示意性方塊圖,該場可程式化閘極陣列(FPGA)被配置為計算倒數函數及/或倒數平方根函數之近似值。
第2圖為根據本揭示案之一個實例之描繪用於計算倒數函數的近似值之方法的流程圖。
第3圖為根據本揭示案之一個實例之被配置為計算倒數函數之輸出的尾數分量及指數分量之資料路徑的一部分之方塊圖。
第4圖為根據本揭示案之一個實例之描繪倒數函數在域[1,2)上的線性插值之圖表。
第5圖為根據本揭示案之一個實例之描繪用於計算倒數平方根函數的近似值之方法的流程圖。
第6圖為根據本揭示案之一個實例之被配置為計算倒數平方根函數之輸出的尾數分量及指數分量之資料路徑的一部分之方塊圖。
第7圖為根據本揭示案之一個實例之描繪倒數平方根函數在域[1,4)上的線性插值之圖表。
第8圖為根據本揭示案之一個實例之組合倒數及倒數平方根資料路徑的尾數部分之方塊圖,該資料路徑被配置為計算如由函數選擇輸入所選擇之倒數函數或倒數平方根函數的輸出之尾數分量。
第9圖為根據本揭示案之一個實例之組合倒數及倒數平方根資料路徑的指數部分之方塊圖,該資料路徑被配置為計算如由函數選擇輸入所選擇之倒數函數或倒數平方根函數的輸出之指數分量。
第10圖為根據本揭示案之一個實例之描繪用於根據函數選擇輸入而選擇性地計算倒數或倒數平方根的方法之流程圖。
第11圖為根據本揭示案之一個實例之描繪用於使用倒數函數或倒數平方根函數的近似值來訓練機器學習模型(諸如,深度神經網路(deep neural network; DNN))的方法之流程圖。
第12A圖為描繪與使用根據本揭示案之一個實例的系統及方法計算倒數函數相關聯之誤差與倒數函數的參考實施相比較之圖表。
第12B圖為描繪與使用基於比較二次插值的技術計算倒數函數相關聯之誤差與第12A圖中所使用之倒數函數的同一參考實施相比較之圖表。
第12C圖為描繪與使用根據本揭示案之一個實例的系統及方法計算倒數平方根函數相關聯之誤差與倒數平方根函數的參考實施相比較之圖表。
第12D圖為描繪與使用基於比較二次插值的技術(其中使用平方根函數及倒數函數之級聯,因為該比較技術不描述倒數平方根之特定實施)計算倒數平方根函數相關聯之誤差與第12C圖中所使用之倒數平方根函數的同一參考實施相比較之圖表。
第13圖為繪示可藉以實踐本發明之態樣的計算設備之實例實體部件的方塊圖。
第14A圖及第14B圖為可藉以實踐本發明之態樣的行動計算設備之簡化方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
200:方法
202:操作
220:操作
222:操作
224:操作
226:操作
250:操作
252:偏差調整
254:對無偏指數取反
256:偏差調整

Claims (20)

  1. 一種場可程式化閘極陣列(FPGA),包括一可配置互連組構,該可配置互連組構連接複數個邏輯區塊,該可配置互連組構及該等邏輯區塊被配置為實施一倒數函數資料路徑,該倒數函數資料路徑包括: 一尾數計算階段,包括藉由該等邏輯區塊及該可配置互連組構實施的該倒數函數資料路徑的一尾數部分,該尾數計算階段被配置為: 將一輸入浮點值之一M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元; 基於該L個最高有效位元自包括一倒數查找表的一線性插值查找表查找一斜率值及一偏移值;以及 藉由將該斜率值乘以該M-L個最低有效位元以計算一乘積並將該偏移值加至該乘積來計算一輸出浮點值之一輸出尾數分量;以及 一指數計算階段,包括藉由該等邏輯區塊及該可配置互連組構實施的複數個加法器,該複數個加法器被配置為計算該輸出浮點值之一輸出指數分量,該計算該輸出指數分量包括對該輸入浮點值之一指數分量取反。
  2. 如請求項1所述之FPGA,其中該可配置互連組構及該等邏輯區塊進一步被配置為實施一倒數平方根函數資料路徑,該倒數平方根函數資料路徑包括: 一尾數部分,藉由該尾數計算階段的該等邏輯區塊及該可配置互連組構實施;以及 一指數部分,藉由該指數計算階段的該等邏輯區塊及該可配置互連組構實施;以及 其中該尾數計算階段及該指數計算階段被配置為根據一函數選擇輸入值在該倒數函數資料路徑與該倒數平方根函數資料路徑之間進行選擇。
  3. 如請求項2所述之FPGA,其中該倒數平方根函數資料路徑之該指數部分進一步被配置為對該輸入浮點值之該指數分量取反並將其除以二;並且 其中該倒數平方根函數資料路徑之該尾數部分被配置為在該輸入浮點值之該M位元尾數分量的一域內執行一倒數平方根之一線性插值。
  4. 如請求項3所述之FPGA,其中該倒數平方根函數資料路徑之該指數部分進一步被配置為: 確定該輸入浮點值之該指數分量的一奇偶性; 基於該指數分量之該奇偶性來計算一指數總和值;以及 將該指數總和值除以二以計算該輸出浮點值之該輸出指數分量。
  5. 如請求項4所述之FPGA,其中該線性插值查找表進一步包括一倒數平方根查找表,並且 其中該倒數平方根函數資料路徑之該尾數部分進一步被配置為: 基於該L個最高有效位元以及該輸入浮點值之該指數分量的該奇偶性,自該倒數平方根查找表查找該斜率值及該偏移值。
  6. 如請求項5所述之FPGA,其中該倒數平方根查找表包括在[1,4)之該域中的條目。
  7. 如請求項2所述之FPGA,其中該尾數計算階段包括一整數乘法器及一加法器,該整數乘法器及該加法器係由該倒數函數資料路徑之該尾數部分及該倒數平方根函數資料路徑之該尾數部分共享。
  8. 如請求項2所述之FPGA,其中該尾數計算階段進一步被配置為基於該L個最高有效位元、該函數選擇輸入值及該輸入浮點值之該指數分量的一奇偶性,自該線性插值查找表查找該斜率值及該偏移值,該線性插值查找表進一步包括一倒數平方根查找表,以及 其中該指數計算階段進一步被配置為: 基於該輸入浮點值之該指數分量的該奇偶性及藉由該尾數計算階段所計算之一中間尾數值的一最高有效位元來計算一倒數平方根指數調整值; 基於該中間尾數值之該最高有效位元來計算一倒數指數調整值; 基於該函數選擇輸入值產生一指數調整值,該指數調整值選自該倒數平方根指數調整值及該倒數指數調整值; 基於該指數調整值對該輸入浮點值的該指數分量取反以計算一指數總和值;以及 當該函數選擇輸入值指示一倒數平方根函數時,將該指數總和值除以二以計算該輸出浮點值之該輸出指數分量。
  9. 一種儲存一配置檔案之電腦儲存媒體,該配置檔案指定一場可程式化閘極陣列(FPGA)的一配置,該配置包括一可配置互連組構及複數個邏輯區塊,其中基於該配置檔案進行配置的一FPGA包括藉由該可配置互連組構連接的邏輯區塊,從而實施: 一尾數計算階段,包括藉由該等邏輯區塊及該可配置互連組構實施的一倒數函數資料路徑的一尾數部分,該尾數計算階段被配置為: 將一輸入浮點值之一M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元; 基於該L個最高有效位元自包括一倒數查找表之一線性插值查找表查找一斜率值及一偏移值;以及 藉由將該斜率值乘以該M-L個最低有效位元以計算一乘積並將該偏移值加至該乘積來計算一輸出浮點值的一輸出尾數分量;以及 一指數計算階段,包括藉由該等邏輯區塊及該可配置互連組構實施的複數個加法器,該複數個加法器被配置為計算該輸出浮點值的一輸出指數分量,該計算該輸出指數分量包括對該輸入浮點值之一指數分量取反。
  10. 如請求項9所述之電腦儲存媒體,其中該配置檔案進一步指定該FPGA之該可配置互連組構及該等邏輯區塊的該配置以實施一倒數平方根函數資料路徑,該倒數平方根函數資料路徑包括: 一尾數部分,藉由該尾數計算階段的該等邏輯區塊及該可配置互連組構實施;以及 一指數部分,藉由該指數計算階段的該等邏輯區塊及該可配置互連組構實施;並且 其中該尾數計算階段及該指數計算階段被配置為根據一函數選擇輸入值在該倒數函數資料路徑與該倒數平方根函數資料路徑之間進行選擇。
  11. 如請求項10所述之電腦儲存媒體,其中該配置檔案進一步配置該倒數平方根函數資料路徑之該指數部分以對該輸入浮點值之該指數分量取反並將其除以二;並且 其中該配置檔案進一步配置該倒數平方根函數資料路徑之該尾數部分以在該輸入浮點值的該M位元尾數分量的一域內執行一倒數平方根之一線性插值。
  12. 如請求項11所述之電腦儲存媒體,其中該配置檔案進一步配置該倒數平方根函數資料路徑之該指數部分以: 確定該輸入浮點值之該指數分量的一奇偶性; 基於該指數分量之該奇偶性來計算一指數總和值;以及 將該指數總和值除以二以計算該輸出浮點值之該輸出指數分量。
  13. 如請求項12所述之電腦儲存媒體,其中該配置檔案進一步配置該線性插值查找表以進一步包括一倒數平方根查找表,並且 其中該配置檔案進一步配置該倒數平方根函數資料路徑的該尾數部分以: 基於該L個最高有效位元以及該輸入浮點值的該指數分量的該奇偶性,自該倒數平方根查找表查找該斜率值及該偏移值。
  14. 如請求項13所述之電腦儲存媒體,其中該配置檔案進一步配置該倒數平方根查找表以包括在[1,4)之該域中的條目。
  15. 如請求項10所述之電腦儲存媒體,其中該配置檔案進一步配置該尾數計算階段以包括一整數乘法器及一加法器,該整數乘法器及該加法器係由該倒數函數資料路徑的該尾數部分及該倒數平方根函數資料路徑的該尾數部分共享。
  16. 如請求項10所述之電腦儲存媒體,其中該配置檔案進一步配置該尾數計算階段以基於該L個最高有效位元、該函數選擇輸入值及該輸入浮點值之該指數分量的一奇偶性自該線性插值查找表查找該斜率值及該偏移值,該線性插值查找表進一步包括一倒數平方根查找表,並且 其中該配置檔案進一步配置該指數計算階段以: 基於該輸入浮點值的該指數分量的該奇偶性及藉由該尾數計算階段所計算的一中間尾數值的一最高有效位元來計算一倒數平方根指數調整值; 基於該中間尾數值之該最高有效位元來計算一倒數指數調整值; 基於該函數選擇輸入值產生一指數調整值,該指數調整值選自該倒數平方根指數調整值及該倒數指數調整值; 基於該指數調整值對該輸入浮點值之該指數分量取反以計算一指數總和值;以及 當該函數選擇輸入值指示一倒數平方根函數時,將該指數總和值除以二以計算該輸出浮點值之該輸出指數分量。
  17. 一種用於加速包括連接複數個邏輯區塊的一可配置互連組構的一場可程式化閘極陣列(FPGA)中的計算的方法,該方法包括以下步驟: 藉由該可配置互連組構及該複數個邏輯區塊所實施的該FPGA的一尾數計算階段將一輸入浮點值的一M位元尾數分量分割成L個最高有效位元及M-L個最低有效位元; 藉由該尾數計算階段基於該L個最高有效位元自包括一倒數查找表的一線性插值查找表查找一斜率值及一偏移值; 藉由該尾數計算階段,藉由用該尾數計算階段的一整數加法器將該斜率值乘以該M-L個最低有效位元以計算一乘積並將該偏移值加至該乘積來計算一輸出浮點值之一輸出尾數分量;以及 藉由由該可配置互連組構及該複數個邏輯區塊所實施之一指數計算階段來計算該輸出浮點值之一輸出指數分量,該計算該輸出指數分量包括對該輸入浮點值之一指數分量取反。
  18. 如請求項17所述之方法,其中該可配置互連組構及該等邏輯區塊進一步被配置為實施一倒數平方根函數資料路徑,該倒數平方根函數資料路徑包括: 一尾數部分,藉由該尾數計算階段之該等邏輯區塊及該可配置互連組構實施;以及 一指數部分,藉由該指數計算階段之該等邏輯區塊及該可配置互連組構實施, 其中該線性插值查找表進一步包括一倒數平方根查找表,並且 其中該方法進一步包括以下步驟: 根據一函數選擇輸入值在該倒數函數資料路徑與該倒數平方根函數資料路徑之間進行選擇; 當該函數選擇輸入值指示一倒數平方根函數時,將該輸入浮點值之該指數分量除以二;以及 當該函數選擇輸入值指示一倒數平方根函數時,基於該L個最高有效位元以及該輸入浮點值之該指數分量的一奇偶性,自該倒數平方根查找表查找該斜率值及該偏移值。
  19. 如請求項18所述之方法,其中該倒數平方根查找表包括在[1,4)的一域中的條目。
  20. 如請求項18之方法,進一步包括訓練一機器學習模型之步驟,包括以下步驟: 由藉由包括一處理器、記憶體及該FPGA的一計算設備所執行的一機器學習模型訓練應用程式接收經標記之訓練資料; 由該機器學習模型訓練應用程式將該訓練資料供應至該機器學習模型之一第一層以計算為 K次之複數次第一層啟動; 計算該機器學習模型之一第二層的複數次第二層啟動,該計算該複數次第二層啟動之步驟包括以下步驟:將為 K次之該複數次第一層啟動供應至該FPGA之該尾數計算階段及該指數計算階段,該複數次第二層啟動包括該 K次第一層啟動之 K個倒數及該 K次第一層啟動之 K個倒數平方根; 回應於該訓練資料計算該機器學習模型之該輸出的複數個歸一化分數; 基於該等歸一化分數更新該機器學習模型;以及 輸出該經更新之機器學習模型,作為一經訓練之機器學習模型。
TW111139991A 2021-11-23 2022-10-21 用於加速倒數函數和倒數平方根函數的計算的系統和方法 TW202324143A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/533,970 US20230161554A1 (en) 2021-11-23 2021-11-23 Systems and methods for accelerating the computation of the reciprocal function and the reciprocal-square-root function
US17/533,970 2021-11-23

Publications (1)

Publication Number Publication Date
TW202324143A true TW202324143A (zh) 2023-06-16

Family

ID=83903237

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111139991A TW202324143A (zh) 2021-11-23 2022-10-21 用於加速倒數函數和倒數平方根函數的計算的系統和方法

Country Status (4)

Country Link
US (1) US20230161554A1 (zh)
CN (1) CN118176480A (zh)
TW (1) TW202324143A (zh)
WO (1) WO2023096689A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118312710B (zh) * 2024-06-07 2024-08-20 沐曦集成电路(上海)有限公司 一种用于gpu的超越函数拟合系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117238B1 (en) * 2002-09-19 2006-10-03 Nvidia Corporation Method and system for performing pipelined reciprocal and reciprocal square root operations
US7406589B2 (en) * 2005-05-12 2008-07-29 International Business Machines Corporation Processor having efficient function estimate instructions

Also Published As

Publication number Publication date
US20230161554A1 (en) 2023-05-25
WO2023096689A1 (en) 2023-06-01
CN118176480A (zh) 2024-06-11

Similar Documents

Publication Publication Date Title
US20230106651A1 (en) Systems and methods for accelerating the computation of the exponential function
TW202324143A (zh) 用於加速倒數函數和倒數平方根函數的計算的系統和方法
Jaiswal et al. High performance FPGA implementation of double precision floating point adder/subtractor
Norris et al. An approximate and iterative posit multiplier architecture for FPGAs
Burgess Prenormalization rounding in IEEE floating-point operations using a flagged prefix adder
US20230334117A1 (en) Method and system for calculating dot products
JP2006172035A (ja) 除算・開平演算器
JP2001350623A (ja) 絶対値算術演算ユニット
TW202234232A (zh) 用於標準化功能的數位電路系統
Villalba-Moreno Digit recurrence floating-point division under HUB format
SalehiTabrizi et al. Designing Efficient Two-Level Reverse Converters for Moduli Set {2^ 2n+ 1-1, 2^ 2n, 2^ n-1\} 2 2 n+ 1-1, 2 2 n, 2 n-1
Vazquez et al. Decimal adders/subtractors in FPGA: efficient 6-input LUT implementations
Singh et al. Optimized floating point arithmetic unit
US11934327B2 (en) Systems and methods for hardware acceleration of data masking using a field programmable gate array
Kumar et al. Simulation And Synthesis Of 32-Bit Multiplier Using Configurable Devices
Tyagi et al. A novel hardware efficient reconfigurable 32-bit arithmetic unit for binary, BCD and floating point operands
Aditya et al. ASIC Implementation of Approximate Single Precision Floating Point Multiplier
Bioul et al. High‐Speed FPGA 10′ s Complement Adders‐Subtractors
Vassalos et al. SUT-RNS forward and reverse converters
Bommana et al. A Run-time Tapered Floating-Point Adder/Subtractor Supporting Vectorization
Bindal et al. Review of Combinational Logic Circuits
TW202347122A (zh) 用於以三角形輸入遮罩來遮罩及正規化資料的硬體加速之系統與方法
Kumar et al. Optimization of logarithmic converter for LNS based SOC
Saha et al. IMPROVED FLOATING POINT MULTIPLIER DESIGN BASED ON CANONICAL SIGN DIGIT.
GB2615774A (en) Method and system for calculating dot products