← 返回书架人工智能 · 交互式 Wiki
模型工程/张量布局与存储视图资料与边界
训练系统与性能进阶计算演示

EXACT MECHANICS / STORAGE & STRIDES

张量布局:形状背后的内存地址

shape 描述逻辑坐标,stride 与 offset 决定怎样访问底层存储。转置、切片、展平和复制分别改变什么,可以用十二个数逐项核对。

01 / ADDRESSING

从二维坐标算出存储位置

index⁡(i,j)=o+i s0+j s1\operatorname{index}(i,j)=o+i\,s_0+j\,s_1
o 为 storage offset,s 为元素单位的 stride。字节地址还需乘每元素字节数并加存储基址。本例只处理非负步长、稠密一维存储上的二维视图。

十二个数的逻辑视图

固定存储 [0…11] · 原形状 3×4

每次切换都从原始值重新演算。写入开关用于检查共享关系,不会修改其他示例或文件。

Shape
Stride
Offset

与原存储共享:;能否无拷贝展平:

原始底层存储

当前逻辑矩阵

逻辑坐标相对偏移存储位置值

02 / VIEW OR COPY

相同形状,未必具有相同的步长和共享关系

操作通常发生什么需要检查
Transpose / 基本切片可修改 shape、stride、offset,仍共享原存储。逻辑顺序与物理顺序是否一致;写入是否影响其他别名。
View按兼容的尺寸与步长重新解释存储。跨合并轴的 stride 关系;不满足时不能无拷贝形成所需形状。
Reshape可返回视图,也可能创建副本。不要依赖它一定共享或一定复制,按框架语义确认。
Contiguous已符合目标布局时可直接返回;否则按逻辑顺序复制。目标 memory format 和别名关系。本面板的复制开关总是产生独立存储。

“非连续”不自动等于“不能 view”。本例每隔一列取值时,逻辑访问地址为 0,2,4,6,8,10,展平后可用 stride=2 表示。转置的逻辑顺序为 0,4,8,1,…,通常无法用一维固定 stride 表示,需要复制才能按该顺序展平。

本例列出了完整地址序列,能直接判断一维视图是否成立。更高维、单元素维、零元素维、广播 stride=0 和其他 memory format,需要按具体算子的规则处理。

03 / ENGINEERING

布局怎样进入性能与正确性问题?

隐藏复制与临时内存

后续 kernel 若要求特定布局,可能先产生连续副本。记录 shape、stride、存储共享和 profiler 中的 copy/contiguous,判断临时峰值与带宽开销。

原地写入与自动微分

共享视图上的写入可能改变反传需要的值。框架的版本计数可以发现部分不合法修改;仍应避免无意修改保存激活。

广播与重复值

广播视图可用零步长让多个逻辑位置引用同一个元素。反向需沿广播轴归约,原地写入重叠位置则需要特殊限制。

Kernel 支持与实际速度

有些算子能直接接受步长,有些布局更利于合并访问。通过地址核对解释数据组织,再用实际测量判断性能。

适用范围与一手资料

四种固定二维视图,正步长与元素单位地址。复制选项总是建立独立存储;一维 view 判断只针对展示的地址序列,不实现通用框架 reshape。

公式与机制的原始依据 · 2 项
知识目录
搜索知识库