女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用LUT做一個可動態配置的卷積核呢?

FPGA之家 ? 來源:AI加速 ? 2023-11-06 09:07 ? 次閱讀

引言

由于卷積核數據在計算過程中保持不變,更新較慢。這樣就可以利用LUT來存儲權重并同時進行乘法運算。LUT乘法器的實現很早就已經研究過,本論文正是在此基礎上,提出了用于實現可配置的卷積實現方法。基于LUT的乘法器不會受到FPGADSP資源的限制,能夠將神經網絡加速應用于低端FPGA芯片。

01

LUT乘法器的實現

一個LUT有固定的輸入和輸出管腳,例如在xilinx的zynq系列器件中,LUT有5個輸入1個輸出或者4個輸入兩個輸出。如何用LUT來實現任意大小的乘法運算呢?這里用到了一個基本的數學法則:因式分解。考慮一個補碼數據x,其有Bi bit,那么表示為:

cc1ccb26-7c3b-11ee-939d-92fbcf53809c.png

如果這個數被一個常數c乘,這個乘法可以被分解為更小bit的乘法,然后對這些小份乘法進行位移和求和。

cc310fa0-7c3b-11ee-939d-92fbcf53809c.png

這樣就將一個BcxBi bit的乘法分解成多個BcxL的乘法,而這個小的乘法就可以去利用LUT來實現。將L設置為LUT的輸入引腳數量,可以直接將乘法映射到LUT上,并且對LUT資源利用效率最高。

02

Compressor加法樹

上述乘法的分解造成了大量的加法,因此需要較大的加法樹來完成各個乘法結果移位后的累加。基于Generalized parallel counters(GPC)充分利用了FPGA中的LUT資源以及進位鏈,可以更好的映射到LUT上,減少LUT使用的浪費。其主要特點就是在一個LUT中實現最多個全加器的運算,這樣能保證進位鏈最短,LUT資源利用率最高。

cc4ef740-7c3b-11ee-939d-92fbcf53809c.png

圖2.1 乘法分解求和

03

可配置LUT

LUT是一個查找表,FPGA中對代碼邏輯的映射都是映射到查找表中。現代的LUT有個特點就是可以進行動態配置,意味著可以在運行中去更新查找表的值。比如在xilinx的virtex,spartan和zynq器件中LUT就可以通過移位寄存器的方式來更新內部數據,32個時鐘周期完成。這樣就可以將卷積核數據存放在LUT中,然后在需要更新的時候進行更新。

04

可配置卷積的硬件架構

卷積運算的結構如圖4.1所示,N個輸入數據(x1, x2, .., xN)每個和c的乘法都被分解為K個乘法,然后將所有的部分乘法結果移位送入加法樹。每個BcXL的乘法需要的LUT數量大致為Bc+L個。加法樹輸出的Bo位寬會遠遠大于輸入位寬,因此需要進行rouding或者截位。

cc5999de-7c3b-11ee-939d-92fbcf53809c.png

圖4.1 基于LUT的卷積運算結構

論文中使用了LUT4輸入2輸出,使用4輸入LUT而不是5輸入是因為乘法分解的特點,4bit位寬對于16bit,8bit整型乘法來說更能充分利用LUT資源。這樣N個輸入數據的每個部分乘法總共花費的LUT數量就是:

cc74112e-7c3b-11ee-939d-92fbcf53809c.png

乘法和加法導致輸出Bo位寬變大,需要減小位寬。論文采用了faithful rouding的辦法。比如輸入是12bit的數據,要求輸出也要截位成12bit,如果在最后求和之后再進行截位,加法樹中就因為計算多余位數求和而浪費LUT。如果每個乘法結果都截位為12,那么會造成最后結果精度較大丟失。如果先對每個乘法結果截位大于12bit的數據,根據總共求和的個數可以計算出需要保留的bit位數。這樣就能夠保證最后加法結果精度等于或者小于直接截位加法結果的精度。比如開始對每個乘法截位2^(-q-g),因為總共有N*Bi/L個部分積結果。所以總共的精度損失為:

cc8bc94a-7c3b-11ee-939d-92fbcf53809c.png

通過限制總精度損失在需要范圍:

cc9a00aa-7c3b-11ee-939d-92fbcf53809c.png

這樣就可以得到g的數據。這樣就能最大程度減少LUT的使用同時能保證良好精度。

ccb136d0-7c3b-11ee-939d-92fbcf53809c.png

圖4.2 3個輸入x,bit位寬12bit,分解為4個乘法,輸出要求12bit

現在來看如何對LUT進行數據的更新。由于將LUT用作4輸入2輸出,那么一個LUT可以計算出2bit結果的乘法。于是計算需要的每個個LUT的一部分用于和weights的偶數部分進行乘法,而另一部分用于和weights的奇數部分乘法。而LUT的配置接口只有一個CDI,因此就需要分別對LUT的這兩部分進行配置。論文中先計算對應奇數部分weights的乘法結果,存儲到LUT中,然后計算對應偶數部分weihts的乘法,存儲到LUT中。

ccd293a2-7c3b-11ee-939d-92fbcf53809c.jpg

圖4.3 動態配置LUT電路圖

從上述架構中可以看到,當進行LUT配置的時候,LUT是無法進行計算的。這個很好解決,可以通過增加雙倍LUT來實現,對沒有計算的LUT來進行動態配置,而另一部分LUT進行計算。這樣相當于進行了ping-pong操作。

ccefd7dc-7c3b-11ee-939d-92fbcf53809c.png

圖4.4 雙LUT結構進行計算

05

結果

下圖給出了不同卷積核大小以及不同位寬所需要的資源對比。相比于其他使用LUT來進行乘法和加法操作的方式來說,這樣更能最大化利用LUT資源。

cd00dc58-7c3b-11ee-939d-92fbcf53809c.jpg

圖5.1 綜合后資源對比

總結

論文中提出的可配置卷積運算架構,可以改善CNN在FPGA的應用。充分利用了LUT資源,可以更好的改善時序性能。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    555

    文章

    8142

    瀏覽量

    355180
  • FPGA
    +關注

    關注

    1643

    文章

    21956

    瀏覽量

    614016
  • 神經網絡
    +關注

    關注

    42

    文章

    4807

    瀏覽量

    102755
  • 乘法器
    +關注

    關注

    9

    文章

    211

    瀏覽量

    37812
  • LUT
    LUT
    +關注

    關注

    0

    文章

    50

    瀏覽量

    12774

原文標題:用LUT來做一個可動態配置的卷積核

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    應用于CNN中卷積運算的LUT乘法器設計

    。利用xilinx器件中LUT的結構特征,設計出的乘法器不但能靈活適應數據位寬,而且能最大限度降低LUT資源使用。 Xilinx ultrascale器件LUT結構 在這里簡要介紹
    的頭像 發表于 11-30 11:45 ?3098次閱讀
    應用于CNN中<b class='flag-5'>卷積</b>運算的<b class='flag-5'>LUT</b>乘法器設計

    何用小安派-Eyes-S1做一個電子木魚?

    2024年的第篇教程來了,本篇學習如何添加LVGL事件,并制作完成電子木魚(小美苦苦哀求,我略微出手而已)。祝大家2024積德累功,心想事成!接下來看看如何用小安派-Eyes-S
    的頭像 發表于 01-13 15:18 ?1366次閱讀
    如<b class='flag-5'>何用</b>小安派-Eyes-S1<b class='flag-5'>做一個</b>電子木魚?

    基于FPGA的IP的DDS信號發生器如何用IP

    我畢業設計要做一個基于FPGA的IP的DDS信號發生器,但是我不會用DDS的IP,有沒有好人能發我份資料如何用IP
    發表于 03-10 11:46

    請問如何用while loop和cast structure來做一個簡單的倒數

    請問如何用while loop和cast structure來做一個簡單的倒數? 比如我輸入10,然后開始倒數,等到0的時候程序停止,
    發表于 10-25 00:58

    何用RTC時鐘去配置鬧鐘

    什么是RTC?RTC的工作原理是什么?RTC時鐘源有哪些?如何用RTC時鐘去配置鬧鐘
    發表于 11-01 06:46

    何用固件庫編程的方式去做一個LED流水燈

    何用固件庫編程的方式去做一個LED流水燈?如何用proteus8.7對LED流水燈進行仿真?
    發表于 11-10 07:33

    何用STM32與zigbee技術做一個可以聯機的游戲機

    何用STM32與zigbee技術做一個可以聯機的游戲機?怎樣去做一個基于android和wifi技術的遠程控制器
    發表于 11-12 07:49

    何用定時器的外部計數器模式來做一個頻率計

    如何使用STM32去測量頻率和占空比?如何用定時器的外部計數器模式來做一個頻率計
    發表于 11-22 07:17

    何用C++做一個TCP的服務器進行數據觀察及采集

    何用C++做一個TCP的服務器進行數據觀察及采集?有哪些設計步驟?
    發表于 12-23 09:41

    何用AD603來做一個低頻小信號功率放大器

    AD603是什么?使用AD603出現的問題有哪些?如何用AD603來做一個低頻小信號功率放大器
    發表于 01-26 06:13

    sTm32可以做卷積濾波圖片嗎?

    sTm32可以做卷積濾波圖片嗎
    發表于 09-21 07:17

    何用廢棄的電腦風扇做一個磁攪?

    之前直想做一個,但直沒動,最近要用就用廢棄的電腦風扇做了
    的頭像 發表于 08-07 14:57 ?7038次閱讀

    物理級聯的LUT的優勢在哪?

    在Versal ACAP中,同一個CLB內同列的LUT是可以級聯的,這是與前代FPGA UltraScale+系列的
    的頭像 發表于 03-27 09:52 ?3649次閱讀
    物理<b class='flag-5'>可</b>級聯的<b class='flag-5'>LUT</b>的優勢在哪?

    何用所學的鴻蒙知識做一個小應用

    ?? 今時今日,不管是大人,還是小孩,都喜歡刷視頻,生活中刷視頻的 APP 也多得是,如:抖音,快手,視頻號,今日頭條,火山…數也不數不清了。 ??? ? 然而華為論壇鴻蒙版塊搞活動,做一個屬于自己
    的頭像 發表于 10-19 09:23 ?1916次閱讀

    高斯濾波的卷積怎么確定

    N為奇數,如3、5、7等。奇數大小的卷積有助于確定一個中心像素點,便于計算。 大小選擇 :卷積
    的頭像 發表于 09-29 09:29 ?1475次閱讀