色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

如何高效處理LMEM中的數(shù)據(jù)?這篇文章帶你學(xué)會!

算能開發(fā)者社區(qū) ? 2024-01-19 08:33 ? 次閱讀

Weight Reorder是TPU-MLIR的一個pass(參考TPU-MLIR編譯流程圖),其完成了對部分常量數(shù)據(jù)的Layout變化和合并。本文介紹其中Convlotion Kernel的Reorder行為以及合并Bias機制,幫助大家理解Conv2D.cpp代碼中的原理。

在SOPHON硬件中,存儲單元多種多樣,包括LMEM(本地存儲器)、SMEM(靜態(tài)SRAM)和GMEM(全局存儲器,即片外DDR存儲)。其中,LMEM作為一種高速SRAM,因其靠近執(zhí)行單元(EU)而提供了高帶寬和低延遲的訪問特性。為了實現(xiàn)這種高速訪問,SOPHON BM1684X處理器將LMEM劃分為64個分區(qū),每個分區(qū)均可由相應(yīng)的NPU單元獨立訪問。每個NPU包含多個EU,并且在不同的計算類型下,EU處理的數(shù)據(jù)各不相同。NPU無法跨分區(qū)訪問數(shù)據(jù)。下圖展示了這種結(jié)構(gòu)的概覽。6da8586a-b662-11ee-aa22-92fbcf53809c.png

64個分區(qū)的地址是連續(xù)編碼的,即第一個分區(qū)的下一個地址便是第二個分區(qū)的起始地址。為了簡化編程,SOPHON定義了數(shù)據(jù)在LMEM中的布局(Layout)。為了更直觀地描述這種布局,本文將采用numpy中的ndarray形式來演示,并使用numpy定義的操作來說明數(shù)據(jù)在存儲器中的布局與神經(jīng)網(wǎng)絡(luò)中定義的數(shù)據(jù)存在的差異。

本文涉及的ndarray操作包括reshape和transpose,并定義了一個resize函數(shù)來整理數(shù)據(jù)布局。resize函數(shù)可以對數(shù)據(jù)的指定維度進行擴展。例如:

tensor_a.shape=(1,2,3,4)#對應(yīng)于d0=1,d1=2,d2=3,d3=4
tensor_b=resize(tensor_a,(2,4,3,8))

此時,在d0、d1、d3維度上使用0進行填充,以達到最終尺寸。

In[1]:tensor_a
Out[1]:
array([[[[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9,10,11]],

[[12,13,14,15],
[16,17,18,19],
[20,21,22,23]]]])

In[2]:resize(tensor_a,(1,3,3,6))
Out[2]:
array([[[[0, 1, 2, 3, 0, 0],
[4, 5, 6, 7, 0, 0],
[8, 9,10,11, 0, 0]],

[[12,13,14,15, 0, 0],
[16,17,18,19, 0, 0],
[20,21,22,23, 0, 0]],

[[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]]]])

resize函數(shù)的一個參考實現(xiàn)如下:

defresize(src,shape):
out=np.zeros(shape,dtype=src.dtype)
_src_slice=tuple(slice(0,min(i,j))fori,jinzip(src.shape,shape))
out[_src_slice]=src
returnout

LMEM中四維數(shù)據(jù)的排布

在LMEM中,一個四維數(shù)據(jù)(n,c,h,w)的Channel維度會被分散到不同的lane上。以一個shape為(2,5,2,3)的數(shù)據(jù)為例,假設(shè)NPU數(shù)量為4,每個NPU中EU數(shù)量為4,并且數(shù)據(jù)在h,w維度上需要與EU對齊:

shape=(2,5,2,3)
a=np.arange(np.prod(shape)).reshape(shape)

6dbc2818-b662-11ee-aa22-92fbcf53809c.png

b=a.reshape(2,5,6)#數(shù)據(jù)hw合并
b=(
resize(b,(2,8,8)) #channel對齊到NPU,hw對齊到EU
.reshape(2,2,4,2,4)
.transpose(2,0,1,3,4)#(4,2,2,2,4)<-?(npu_id,?n^,?c^,?h^,?w^)
)

其中(n^, c^, h^, w^)為每個lane上數(shù)據(jù)的實際shape,對應(yīng)的stride也滿足處理器中的定義。可以參考TPUKernel用戶開發(fā)手冊中的描述。npu_id維度是一個隱含維度,其值為npu數(shù)量,此處為4。

6dbc2818-b662-11ee-aa22-92fbcf53809c.png在4個NPU上對齊EU的數(shù)據(jù)排列

卷積權(quán)重的排列

為了確保EU能夠高效地使用,BM1684X處理器中卷積的權(quán)重需要按照EU對齊的方式優(yōu)先存儲IC維度的數(shù)據(jù),然后將OC維度分布到不同的NPU上。相應(yīng)的存儲方式可以表示為:

c=a.reshape(2,5,6)
c=(
resize(c,(1*4,2*4,6)) #npu,eu_align,h*w
.reshape(1,4,2,4,6)
.transpose(1,0,2,4,3) #<4x1x2x6x4>
)

6dd8092a-b662-11ee-aa22-92fbcf53809c.png卷積權(quán)重的存儲方式

卷積權(quán)重與偏置的合并

在BM1684X中,權(quán)重需要按照EU對齊方式存儲,而偏置則采用緊湊模式。由于偏置數(shù)據(jù)量較小,直接拷貝效率不高。因為兩種模式下數(shù)據(jù)的stride不一致,無法直接將它們拼接在一起。在TPU-MLIR中,通過預(yù)先將權(quán)重和偏置合并,形成最終在LMEM中的存儲形式,然后通過一條DMA指令直接加載到LMEM中。

d=np.arange(60,65).reshape(1,5,1,1)
d=(
resize(d,(1,2*4,1,1)) #npu,eu_align
.reshape(1,2,4,1,1)
.transpose(2,0,3,4,1) #<4x1x1x1x2>
.resize(4,1,2,1,4)#EUalign<4x1x1x1x4>
)
e=np.concatenate((d.reshape(4,1,4),c.reshape(4,12,4)),axis=1)

6de437b8-b662-11ee-aa22-92fbcf53809c.png卷積權(quán)重和偏置合并后的形式

通過上述方法,我們可以有效地組織LMEM中的數(shù)據(jù),以適應(yīng)SOPHON BM1684X處理器的計算需求,從而提高整體的執(zhí)行效率和性能。

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

    關(guān)注

    68

    文章

    19342

    瀏覽量

    230227
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7513

    瀏覽量

    163987
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    659

    瀏覽量

    32903
收藏 人收藏

    評論

    相關(guān)推薦

    康謀分享 | 如何應(yīng)對ADAS/AD海量數(shù)據(jù)處理挑戰(zhàn)?

    如何有效處理ADAS/AD海量數(shù)據(jù)并從中獲得見解?IVEX數(shù)據(jù)處理流程可自動從原始傳感器數(shù)據(jù)等輸入識別出值得關(guān)注的事件和場景,推動
    的頭像 發(fā)表于 12-25 10:05 ?2654次閱讀
    康謀分享 | 如何應(yīng)對ADAS/AD海量<b class='flag-5'>數(shù)據(jù)處理</b>挑戰(zhàn)?

    學(xué)會NI-DAQmx的十個函數(shù)解決80%的數(shù)據(jù)采集應(yīng)用問題

    學(xué)會NI-DAQmx的十個函數(shù)解決80%的數(shù)據(jù)采集應(yīng)用問題
    發(fā)表于 01-12 22:16

    輕松學(xué)會單片機

    電平,就可以學(xué)習引腳的數(shù)字I/O功能,在按下某個按鈕后,某發(fā)光二極管發(fā)亮,這就是數(shù)字電路組合邏輯的功能,雖然很簡單,但是可以學(xué)習一般的單片機編程思想,例如,必須設(shè)置很多寄存器對引腳進行初始化處理
    發(fā)表于 09-14 10:51

    帶你分析圖像傳感器與軟件圖像處理流水線

    一篇文章帶你分析圖像傳感器與軟件圖像處理流水線。
    發(fā)表于 04-27 06:28

    從0開始,181頁知識帶你輕松搞定C++語言

    擅長面向?qū)ο蟪绦蛟O(shè)計的同時,還可以進行基于過程的程序設(shè)計,因而C++就適應(yīng)的問題規(guī)模而論,大小由之。 C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計語言的問題描述能力。 這個資料帶你從最基礎(chǔ)開始了解學(xué)習C++,
    發(fā)表于 07-24 13:10

    如何處理好FPGA設(shè)計跨時鐘域間的數(shù)據(jù)

    跨時鐘域處理是FPGA設(shè)計中經(jīng)常遇到的問題,而如何處理好跨時鐘域間的數(shù)據(jù),可以說是每個FPGA初學(xué)者的必修課。如果是還是在校的學(xué)生,跨時鐘域處理也是面試中經(jīng)常常被問到的一個問題。在本篇
    發(fā)表于 07-29 06:19

    教你怎樣學(xué)會PID調(diào)參

    不會PID調(diào)參?這篇文章圖文結(jié)合帶你學(xué)會PID調(diào)參!讓你成為PID調(diào)參大神!!!
    發(fā)表于 01-06 07:47

    帶你玩轉(zhuǎn)RT-Thread,開發(fā)教程匯總(共13篇)

    本教程帶你手把手帶你學(xué)會玩轉(zhuǎn)RT-Thread,從RT-Thread的內(nèi)核到外設(shè)、傳感器、組件包,應(yīng)用開發(fā),讓對于剛剛接觸使用RTT的你不再膽怯,開心玩耍RT-Thread!本教程使用的開發(fā)板:正點原子-戰(zhàn)艦V3.0 型號:st
    發(fā)表于 05-11 14:10

    帶你深入探索okio組件高效的奧秘

    。中間多次拷貝,降低了IO效率,同時增加了系統(tǒng)消耗。為了滿足開發(fā)者對IO的更高要求,三方組件庫推出IO處理利器——okio(JS版本)。okio使用Segment作為數(shù)據(jù)存儲容器,通過提供Segment
    發(fā)表于 07-08 14:43

    無法讓SWO數(shù)據(jù)在MCUXpresso上高效工作怎么處理

    我正在使用 IMXRT-1061/1062 進行項目 我試圖讓 SWO 數(shù)據(jù)在 MCUXpresso 上高效工作,但沒有成功。 設(shè)置配置: 從 MCUXpresso 11.5.0 轉(zhuǎn)移到
    發(fā)表于 06-02 06:59

    基于ARM處理器的高效異常處理解決方案

    。測試結(jié)果表明,該方案的異常處理更為高效。 在航空航天、工業(yè)控制及醫(yī)療等領(lǐng)域中,嵌入式系統(tǒng)的安全性、可靠性以及高效性作用顯著,而異常是系統(tǒng)在運行過程的突發(fā)事件,異常
    發(fā)表于 02-03 03:38 ?1416次閱讀
    基于ARM<b class='flag-5'>處理</b>器的<b class='flag-5'>高效</b>異常<b class='flag-5'>處理</b>解決方案

    關(guān)于選擇處理器的八個認知錯誤

     我們購買電腦,往往會關(guān)心處理器的性能好壞,處理器的性能好壞直接影響了電腦的運算速度,我們可以將處理器比喻成大腦,是計算機的核心,決定了電腦速度好壞。那么如何選購處理器呢?今天小編分享
    發(fā)表于 05-20 09:23 ?869次閱讀

    Python數(shù)據(jù)清洗和預(yù)處理入門完整指南

    凡事預(yù)則立,不預(yù)則廢,訓(xùn)練機器學(xué)習模型也是如此。數(shù)據(jù)清洗和預(yù)處理是模型訓(xùn)練之前的必要過程,否則模型可能就「廢」了。本文是一個初學(xué)者指南,將帶你領(lǐng)略如何在任意的數(shù)據(jù)集上,針對任意一個機器
    的頭像 發(fā)表于 12-21 13:50 ?893次閱讀

    labview處理excel數(shù)據(jù)的粗大誤差

    實際應(yīng)用,我們經(jīng)常需要處理和分析來自不同來源的數(shù)據(jù)。其中,Excel表格是一個常見的數(shù)據(jù)格式,因為它易于使用和管理。然而,Excel數(shù)據(jù)
    的頭像 發(fā)表于 01-05 16:15 ?945次閱讀

    盛顯科技:拼接處理器如何實現(xiàn)高效數(shù)據(jù)拼接操作?

    眾所周知,高效數(shù)據(jù)拼接操作無疑是數(shù)據(jù)處理領(lǐng)域的核心優(yōu)勢,它能極大地縮短了處理時間,讓拼接處理器能夠迅速應(yīng)對海量
    的頭像 發(fā)表于 10-23 10:58 ?258次閱讀
    盛顯科技:拼接<b class='flag-5'>處理</b>器如何實現(xiàn)<b class='flag-5'>高效</b><b class='flag-5'>數(shù)據(jù)</b>拼接操作?
    主站蜘蛛池模板: 蜜柚视频高清在线| qovd伦理| voyeurhit农村夫妻偷拍| 国产欧美日韩国产高清| 免费观看激烈日板子| 亚洲 日韩 欧美 国产专区| 99热6精品视频6| 京香在线播放| 上原结衣快播| 99热在线观看精品| 久久高清免费视频| 午夜色网站| 扒开她的黑森林让我添动态图| 久久视热频这里只精品| 香蕉97超级碰碰碰碰碰久| WRITEAS检查身体| 理论937| 亚洲欧美一区二区久久| 国产a级午夜毛片| 欧洲xxxxx| 67194成网页发布在线观看| 精品国产九九| 亚洲 视频 在线 国产 精品| 敌伦小芳的第一次| 欧美人与动牲交A免费| 真实国产熟睡乱子伦对白无套| 国产香蕉九九久久精品免费| 色拍拍噜噜噜啦啦新网站| 99福利在线| 狼人大香伊蕉国产WWW亚洲| 亚洲免费人成 久久| 国产乱码精品AAAAAAAA| 色就色 综合偷拍区欧美| Y8848高清私人影院软件优势| 美女漏bb| 中文字幕人成人乱码亚洲影视S| 挤奶门事件完整照片| 亚洲国产日韩欧美在线a乱码| 国产精品爆乳尤物99精品| 日日操天天操夜夜操| 产传媒61国产免费|