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

    浏览量

    64255
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72777
  • 数据结构
    +关注

    关注

    3

    文章

    564

    浏览量

    39900
  • NPU
    NPU
    +关注

    关注

    2

    文章

    210

    浏览量

    18086
收藏 人收藏

    评论

    相关推荐

    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 428次阅读
    <b class='flag-5'>TPU</b><b class='flag-5'>内存</b>(一)

    TPU和NPU的区别

    TPU和NPU的区别  在IT领域中,TPU和NPU属于两种不同类型的芯片。这两种芯片都是专为人工智能(AI)和大型数据分析设计而开发的,但它们的功能和优点却有所不同。在本文中,我们将详细介绍TPU
    的头像 发表于 08-27 17:08 3648次阅读

    谷歌发布多模态Gemini大模型及新一代TPU系统Cloud TPU v5p

    谷歌亦发布新一代TPU 系统——Cloud TPU v5p,以帮助训练尖端的 AI 模型。目
    的头像 发表于 12-12 10:50 805次阅读
    谷歌发布多模态Gemini大模型及新一代<b class='flag-5'>TPU</b>系统Cloud <b class='flag-5'>TPU</b> v5p

    TPU是什么材料做的

    TPU(Thermoplastic Polyurethane)是热塑性聚氨酯的简称,属于一种高强度、高弹性、高耐磨的特种塑料材料。它是由聚醚或聚酯两元醇与三元异氰酸酯或四元稀土异氰酸酯通过共聚反应
    的头像 发表于 01-12 13:40 665次阅读