0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用FPGA實現(xiàn)FP16格式點積級聯(lián)運(yùn)算

Wildesbeast ? 來源:21IC ? 作者:楊宇 ? 2020-08-15 11:25 ? 次閱讀

通過使用Achronix Speedster7t FPGA中的機(jī)器學(xué)習(xí)加速器MLP72,開發(fā)人員可以輕松選擇浮點/定點格式和多種位寬,或快速應(yīng)用塊浮點,并通過內(nèi)部級聯(lián)可以達(dá)到理想性能。

神經(jīng)網(wǎng)絡(luò)架構(gòu)中的核心之一就是卷積層,卷積的最基本操作就是點積。向量乘法的結(jié)果是向量的每個元素的總和相乘在一起,通常稱之為點積。此向量乘法如下所示:

圖1 點積操作

該總和S由每個矢量元素的總和相乘而成,因此S=a1b1+a2b2+a3b3+…

本文講述的是使用FP16格式的點積運(yùn)算實例,展示了MLP72支持的數(shù)字類型和乘數(shù)的范圍。

此設(shè)計實現(xiàn)了同時處理8對FP16輸入的點積。該設(shè)計包含四個MLP72,使用MLP內(nèi)部的級聯(lián)路徑連接。每個MLP72將兩個并行乘法的結(jié)果相加(即aibi+ai+1bi+1),每個乘法都是i_a輸入乘以i_b輸入(均為FP16格式)的結(jié)果。來自每個MLP72的總和沿著MLP72的列級聯(lián)到上面的下一個MLP72塊。在最后一個MLP72中,在每個周期上,計算八個并行FP16乘法的總和。

最終結(jié)果是多個輸入周期內(nèi)的累加總和,其中累加由i_first和i_last輸入控制。 i_first輸入信號指示累加和歸零的第一組輸入。 i_last信號指示要累加和加到累加的最后一組輸入。最終的i_last值可在之后的六個周期使用,并使用i_last o_valid進(jìn)行限定。兩次運(yùn)算之間可以無空拍。

那么,以上運(yùn)算功能如何對應(yīng)到MLP內(nèi)部呢?其后的細(xì)節(jié)已分為MLP72中的多個功能階段進(jìn)行說明。

● 進(jìn)位鏈

首先請看下圖,MLP之間的進(jìn)位鏈結(jié)構(gòu),這是MLP內(nèi)部的專用走線,可以保證級聯(lián)的高效執(zhí)行。

圖3 MLP進(jìn)位鏈

● 乘法階段

下圖是MLP中浮點乘法功能階段,其中寄存器代表一級可選延遲。

圖4 MLP乘法功能階段框圖

MLP72浮點乘法級包括兩個24位全浮點乘法器和一個24位全浮點加法器。兩個乘法器執(zhí)行A×B和C×D的并行計算。加法器將兩個結(jié)果相加得到A×B + C×D。

乘法階段有兩個輸出。下半部分輸出可以在A×B或(A×B + C×D)之間選擇。上半部分輸出始終為C×D。

乘法器和加法器使用的數(shù)字格式由字節(jié)選擇參數(shù)以及和參數(shù)設(shè)置的格式確定。

浮點輸出具有與整數(shù)輸出級相同的路徑和結(jié)構(gòu)。MLP72可以配置為在特定階段選擇整數(shù)或等效浮點輸入。輸出支持兩個24位全浮點加法器,可以對其進(jìn)行加法或累加配置。 進(jìn)一步可以加載加法器(開始累加),可以將其設(shè)置為減法,并支持可選的舍入模式。

最終輸出階段支持將浮點輸出格式化為MLP72支持的三種浮點格式中的任何一種。 此功能使MLP72可以外部支持大小一致的浮點輸入和輸出(例如fp16或bfloat16),而在內(nèi)部以fp24執(zhí)行所有計算。

圖5 MLP浮點輸出階段框圖

需要強(qiáng)調(diào)的是本設(shè)計輸入和輸出都是FP16格式,中間計算過程,即進(jìn)位鏈上的fwdo_out和fwdi_dout 都是FP24格式。具體邏輯框圖如下所示:

圖6 FP16點積邏輯框圖

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601239
  • 卷積
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    18487
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8349

    瀏覽量

    132315
收藏 人收藏

    評論

    相關(guān)推薦

    請問如何把WAV,MP3格式的音頻文件轉(zhuǎn)化為16位的數(shù)據(jù)IIS格式?

    你好,請問如何把WAV,MP3格式的音頻文件轉(zhuǎn)化為16位的數(shù)據(jù)IIS格式?
    發(fā)表于 10-23 07:24

    級聯(lián)精密運(yùn)算放大器級以實現(xiàn)出色的交流和直流性能

    電子發(fā)燒友網(wǎng)站提供《級聯(lián)精密運(yùn)算放大器級以實現(xiàn)出色的交流和直流性能.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 11:00 ?0次下載
    <b class='flag-5'>級聯(lián)</b>精密<b class='flag-5'>運(yùn)算</b>放大器級以<b class='flag-5'>實現(xiàn)</b>出色的交流和直流性能

    運(yùn)算放大器增益帶寬對有源濾波電路的影響是什么?

    想問一個問題,運(yùn)算放大器增益帶寬對有源濾波電路的影響
    發(fā)表于 08-22 07:15

    請問esp32如何將16進(jìn)制字符串轉(zhuǎn)換成base64格式

    請問 esp32 如何將 16進(jìn)制字符串轉(zhuǎn)換成base64格式
    發(fā)表于 06-24 08:35

    使用rgb888格式,在清屏切換時會有雜亂的條紋出現(xiàn)是怎么回事?

    使用rgb888格式,在清屏切換時,屏幕會有雜亂的條紋出現(xiàn)? 但是使用 ARGB8888, RGB565的格式時貌似木有,是怎么個情況 ???
    發(fā)表于 05-08 06:09

    NVIDIA GPU架構(gòu)下的FP8訓(xùn)練與推理

    FP8 訓(xùn)練利用 E5M2/E4M3 格式,具備與 FP16 相當(dāng)?shù)膭討B(tài)范圍,適用于反向傳播與前向傳播。
    的頭像 發(fā)表于 04-25 10:01 ?638次閱讀
    NVIDIA GPU架構(gòu)下的<b class='flag-5'>FP</b>8訓(xùn)練與推理

    在gfx模擬器上產(chǎn)生的代碼如何設(shè)置為rgb565格式?

    請教下,在gfx模擬器上,產(chǎn)生的代碼如何設(shè)置為rgb565格式?
    發(fā)表于 04-24 06:26

    Python:從串口讀取數(shù)據(jù)并以16進(jìn)制格式展示

    本文凌順實驗室(lingshunlab.com)簡單實現(xiàn)Python讀取串口數(shù)據(jù),并且按16進(jìn)制格式顯示出來。
    的頭像 發(fā)表于 03-05 14:25 ?962次閱讀
    Python:從串口讀取數(shù)據(jù)并以<b class='flag-5'>16</b>進(jìn)制<b class='flag-5'>格式</b>展示

    求助,請問12位傳感器數(shù)據(jù)如何變成YUY2格式?

    請教下傳感器輸出的12位并行數(shù)據(jù)RAW通過FPGA采集出來,然后要轉(zhuǎn)成YUY2格式通過GPIF接口傳給FX3,再通過USB顯示實時圖像視頻?,F(xiàn)在問題是12位傳感器數(shù)據(jù)如何變成YUY2格式?通過slaveFIFO時序
    發(fā)表于 02-28 07:25

    同步級聯(lián)和異步級聯(lián)的區(qū)別 異步級聯(lián)和同步級聯(lián)分別要注意什么

    指與同步級聯(lián)相對應(yīng)的,異步級聯(lián)是一種不同的級聯(lián)方式。在異步級聯(lián)中,級聯(lián)模塊之間不需要等待前一個模塊完全執(zhí)行完畢才能開始執(zhí)行下一個模塊。相反,
    的頭像 發(fā)表于 02-22 13:40 ?1481次閱讀

    FP16轉(zhuǎn)換報錯的原因?

    FP32轉(zhuǎn)換正常,FP16轉(zhuǎn)換報錯(model_transform正常) 運(yùn)行命令為: model_deploy.py--mlir
    發(fā)表于 01-10 08:01

    車載播放器怎么選擇格式

    :MP3是目前最常見和廣泛支持的音頻格式之一。它可以提供良好的音質(zhì),并且具有較小的文件大小。由于大多數(shù)音樂都是以MP3格式存儲在設(shè)備中的,所以選擇支持MP3格式的車載播放器是首選。 AAC:AAC是一種高級音頻編碼
    的頭像 發(fā)表于 01-05 16:36 ?1573次閱讀

    英偉達(dá)為中國市場量身打造RTX 4090 D顯卡,規(guī)避美國出口限制

    而預(yù)計RTX 4090 D需達(dá)到的運(yùn)算性能限制為小于4800 TPP(Texel Processing Performance),而現(xiàn)款RTX 4090無論FP8還是FP16的運(yùn)行結(jié)果均超過該限制
    的頭像 發(fā)表于 12-19 14:54 ?961次閱讀

    縫縫補(bǔ)補(bǔ)的浮點數(shù)進(jìn)制轉(zhuǎn)換器

    [浮點數(shù)]()在計算機(jī)科學(xué)中是一種重要的數(shù)據(jù)類型,用于表示實數(shù)。其中,FP32和FP16是兩種常見的浮點數(shù)格式,分別占用32位和16位。
    的頭像 發(fā)表于 12-04 14:00 ?1391次閱讀
    縫縫補(bǔ)補(bǔ)的浮點數(shù)進(jìn)制轉(zhuǎn)換器

    FlashAttention2詳解(性能比FlashAttention提升200%)

    GPU performance characteristics. GPU主要計算單元(如浮點運(yùn)算單元)和內(nèi)存層次結(jié)構(gòu)。大多數(shù)現(xiàn)代GPU包含專用的低精度矩陣乘法單元(如Nvidia GPU的Tensor Core用于FP16/BF16
    的頭像 發(fā)表于 11-24 16:21 ?1173次閱讀
    FlashAttention2詳解(性能比FlashAttention提升200%)