<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

TPU內存(二)

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-08-18 11:29 ? 次閱讀

我們知道,TPU中的數據結構是張量,可以看做是一個四維數組,形狀為(N,C,H,W)。

要描述一個張量在算能的TPU上是如何排列的,我們首先要知道一個概念。 那是Stride。

它用于衡量同一 NPU 中張量的兩個元素之間的距離。

wKgZomTeydeACV1hAAGcNUSifAI877.jpg

例如,W_Stride 表示張量 n,c,h,w 和 n,c,h,w+1 之間有多少個元素

而H_stride表示從n,c,h,w到n,c,h+1,w我們需要經過的元素個數

同樣,我們可以得到C_stride和N_stride在Global memory上的含義。

但是對于local memory,我們可以看到是有所不同的,C_stride指的是從n,c,h,w到n,c+X,h,w的元素個數,其中X表示 NPU 的數量。

wKgaomTeydmAO7c4AAKvIOJajIg635.jpg

而在N_stride中我們還需要考慮我們開始存儲數據的local memory的索引。

稍后我將進一步解釋這一點。

有了tensor的shape和stride,我們基本上就可以得到這個tensor的每個元素在內存上的地址

但是步長的單位是張量中的單個元素,所以對于不同的數據類型,要計算它們的地址,我們還必須將它們的字節數考慮進去。

例如,在一個 F32 張量中,w 和 w+1 個元素之間的實際距離是 1 * 4。

在global memory中,數據以連續的方式存儲,

wKgZomTeyduAUvWMAAHhigiK6oY705.jpg

這很容易理解。 由于global memory是一個完整的DDR,我們把tensor的每個元素挨個存儲,所以w_stride等于1,h_stride等于w,對于c_stride來說,就是w的h倍,n_stride則是c_stride的c倍。

例如,對于形狀為 (2,2,3,2) 的張量,
w_stride為1,每2個元素后開始一個新的h,所以h_stride為2,每個通道包含3 * 2個元素,所以c_stride應該為6,同理,我們可以很容易地得到n_stride, 12。

但是對于本地內存,就變得有點復雜了,

wKgaomTeyd2AFMUeAALYip3_ZhU252.jpg

首先,張量的不同通道會被放到不同的NPU上。 如果通道大于 NPU 的數量,它將返回到第一個 NPU開始存放。

這就是為什么local memory的C_stride是n,c,h,w到n,c+X,h,w。 Stride僅衡量同一memory中的距離。

例如,我們使用 X個NPU 來存儲具有 X + 2 個通道的張量,我們將從第一個 NPU 到最后一個 NPU 放入每個通道的元素。 然后其余的通道再次從第一個 NPU 開始存放。

對于張量的每個batch,我們將從同一 NPU 上新的一行開始存儲。

wKgZomTeyd-ASS8lAAMQ7pdI8Ew421.jpg

像這個例子中,當我們完成第一批的存儲后,即使同一個bank中的剩余內存為空,我們也不會存儲任何東西,而是重新從NPU0開始。

這就解釋了為什么我們在計算 N_stride 時需要考慮local memory的起始索引。

基于上述原則,local memory中的張量以多種不同方式排布。

wKgaomTeyeCARK4kAAE4JsKbFoU256.jpg

最常用的一種是對齊排布。

這意味著張量的起始地址應該可以被 EU_BYTE 整除。

另外,對于不同通道的數據,用于保存的區域大小應該是EU_NUM的倍數,

從數學角度看,C_stride的計算應該是這樣的(看PPT)。 當H * W小于EU_NUM時,C_stride為EU_NUM。 當大于EU_NUM但小于2倍EU_NUM時,C_stride應為EU_NUM的2倍。

關于N_stride,由于有時通道數大于NPU_NUM或者local memory的起始索引不為零,可能會導致不同通道的數據存儲在同一個NPU中,N_stride的公式也應該做round- up 操作,如PPT中所示。

例如,我們將在具有 64 EU_BYTE 的 TPU 上處理形狀為 (2,3,4,5) 的fp16張量。其中包含了4個NPU,而本地內存的起始索引設置為 0。

wKgaomTeyeKAE9ULAAOlUYDXgBI340.jpg

所以我們從NPU0開始存儲張量,W_stride和H_stride顯然是1和5。

對于C_stride,由于H * W小于EU_NUM,所以C_stride為32。

另外,因為這個張量的通道小于 NPU_NUM,所以N_stride 也是 32。

但是當起始索引設置為2時,情況會有點不同,C步長仍然是32,但是由于張量的最后一個通道被存到第一個NPU,下一batch中的數據應該從NPU2的下一行開始存儲,則 N_stride 應為 64。

wKgZomTeyeWAK47EAAOsUe8G2XM560.jpg

另一個常見的排布類型就是緊密排布,除了C_stride部分,其余的與對齊排布方式相似。

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

    關注

    9

    文章

    677

    瀏覽量

    64252
  • 內存
    +關注

    關注

    8

    文章

    2767

    瀏覽量

    72769
  • 數據結構
    +關注

    關注

    3

    文章

    564

    瀏覽量

    39900
  • NPU
    NPU
    +關注

    關注

    2

    文章

    210

    瀏覽量

    18084
收藏 人收藏

    評論

    相關推薦

    TPU-MLIR開發環境配置時出現的各種問題求解

    按照 TPU-MLIR 開發指南進行環境配置: 2.1. 代碼下載? 代碼路徑: https://github.com/sophgo/tpu-mlir 克隆該代碼后, 需要在Docker中編譯
    發表于 01-10 08:02

    CORAL-EDGE-TPU:珊瑚開發板TPU

    包括一個上系統模塊(SOM)和護壁板。SOM基于iMX 8M應用處理器,還包含LPDDR4內存,eMMC存儲,雙頻Wi-Fi和Edge TPU。Edge TPU是由Google設計的小型ASIC
    發表于 05-29 10:43

    TPU透明副牌.TPU副牌料.TPU抽粒廠.TPU塑膠副牌.TPU再生料.TPU低溫料

    清源塑膠經營. 供應TPU塑膠原料.副牌.再生顆粒料.TPU塑膠.TPU透明副牌. 再生粒子.白色.黑色.透明. 注塑料.擠出料. 壓延等等..聚醚. 脂肪料. 聚酯料.硬度70A--98A.
    發表于 11-21 17:21

    TPU副牌低溫料.TPU熱熔料.TPU中溫料.TPU低溫塑膠.TPU低溫抽粒.TPU中溫塑料

    清源塑膠公司.供應TPU塑膠原料.副牌.再生顆粒料.TPU塑膠.TPU透明副牌. 再生粒子.白色.黑色.透明. 注塑料.擠出料. 壓延等等..聚醚. 脂肪料. 聚酯料.硬度70A--98A. 高硬度
    發表于 11-21 17:33

    供應TPU抽粒工廠.TPU再生工廠.TPU聚醚料.TPU聚酯料.TPU副牌透明.TPU副牌.TPU中低溫料

    清源塑膠經營.進口.國內.供應TPU原料.副牌TPU塑膠.TPU透明副牌. 再生粒子.白色.黑色.透明. 注塑料.擠出料. 壓延等等..聚醚. 脂肪料. 聚酯料.硬度70A--98A. 高硬度
    發表于 11-21 17:47

    采購TPU復牌料.復牌TPU原料.TPU復牌透明塑料.TPU廢邊料.TPU廢膜料.TPU低溫料

    全球大量采購① tpu,透明,白色,副牌,再生粒,注塑,擠出料,TPU邊角膜料. TPU廢卷膜. 進口.國內料. 200噸,② TPU低溫,中溫.副牌料,膠塊料. 200噸, ③ PB
    發表于 11-22 02:38

    CPU,GPU,TPU,NPU都是什么

    嵌入式算法移植優化學習筆記5——CPU,GPU,TPU,NPU都是什么一、什么是CPU?、什么是GPU?三、什么是TPU?四、什么是NPU?附:一、什么是CPU?中央處理器(CPU),是電子計算機
    發表于 12-15 06:07

    如何驗證MC68332 TPU配置是否正確?

    a) 以下 TPU 模塊配置在項目中完成 *M332_TPU_TMCR = 0x1e4c;/* 選擇 TCR1 時基 = 250nsec, TCR2 = 4usec,仿真模式
    發表于 05-09 08:17

    BM1684中各種內存的概念

    A53專用 + 4GB TPU專用 + 4GB VPP/VPU專用。 設備內存(Device Memory)和系統內存(Host Memory): 根據BM168x產品類型或工作模式的不同,設備
    發表于 09-19 07:47

    tpu是什么材料_tpu硬度范圍_tpu的應用

    TPU(Thermoplastic polyurethanes)名稱為熱塑性聚氨酯彈性體橡膠。主要分為有聚酯型和聚醚型之分,它硬度范圍寬(60HA-85HD)、耐磨、耐油,透明,彈性好,在日用品
    發表于 12-01 15:55 ?1.7w次閱讀

    一文搞懂 CPU、GPU 和 TPU

    張量處理單元(TPU)是一種定制化的 ASIC 芯片,它由谷歌從頭設計,并專門用于機器學習工作負載。TPU 為谷歌的主要產品提供了計算支持,包括翻譯、照片、搜索助理和 Gmail 等。 在本文中,我們將關注 TPU 某些特定的
    的頭像 發表于 09-15 10:46 ?4.4w次閱讀

    TPU內存(一)

    TPU內存(一)
    的頭像 發表于 08-18 11:29 ?427次閱讀
    <b class='flag-5'>TPU</b><b class='flag-5'>內存</b>(一)

    TPU和NPU的區別

    TPU和NPU的區別? 在IT領域中,TPU和NPU屬于兩種不同類型的芯片。這兩種芯片都是專為人工智能(AI)和大型數據分析設計而開發的,但它們的功能和優點卻有所不同。在本文中,我們將詳細介紹TPU
    的頭像 發表于 08-27 17:08 ?3631次閱讀

    谷歌發布多模態Gemini大模型及新一代TPU系統Cloud TPU v5p

    谷歌亦發布新一代TPU 系統——Cloud TPU v5p,以幫助訓練尖端的 AI 模型。目
    的頭像 發表于 12-12 10:50 ?804次閱讀
    谷歌發布多模態Gemini大模型及新一代<b class='flag-5'>TPU</b>系統Cloud <b class='flag-5'>TPU</b> v5p

    TPU是什么材料做的

    TPU(Thermoplastic Polyurethane)是熱塑性聚氨酯的簡稱,屬于一種高強度、高彈性、高耐磨的特種塑料材料。它是由聚醚或聚酯兩元醇與三元異氰酸酯或四元稀土異氰酸酯通過共聚反應
    的頭像 發表于 01-12 13:40 ?660次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>