FPGA運算單元可支持高算力浮點
MLP全稱Machine Learning Processing單元,是由一組至多32個乘法器的陣列,以及一個加法樹、累加器、還有四舍五入rounding/飽和saturation/歸一化normalize功能塊。同時還包括2個緩存,分別是一個BRAM72k和LRAM2k,用于獨立或結(jié)合乘法器使用。MLP支持定點模式和浮點模式,對應(yīng)下面圖1和圖2。
考慮到運算能耗和準(zhǔn)確度的折衷,目前機器學(xué)習(xí)引擎中最常使用的運算格式是FP16和INT8,而Tensor Flow支持的BF16則是通過降低精度,來獲得更大數(shù)值空間。下面的表1是MLP支持的最大位寬的浮點格式,表2說明了各自的取值范圍。
而且這似乎也成為未來的一種趨勢。目前已經(jīng)有不少研究表明,更小位寬的浮點或整型可以在保證正確率的同時,還可以減少大量的計算量。因此,為了順應(yīng)這一潮流,MLP還支持將大位寬乘法單元拆分成多個小位寬乘法,包括整數(shù)和浮點數(shù)。詳見下表3。
值得注意的是,這里的bfloat16即Brain Float格式,而block float為塊浮點算法,即當(dāng)應(yīng)用Block Float16及更低位寬塊浮點格式時,指數(shù)位寬不變,小數(shù)位縮減到了16bit以內(nèi),因此浮點加法位寬變小,并且不需要使用浮點乘法單元,而是整數(shù)乘法和加法樹即可,MLP的架構(gòu)可以使這些格式下的算力倍增。





