生成连续整数序列到目标Tile中。
对于有效元素上的线性化索引 [object Object]:
升序:
降序:
线性化顺序取决于Tile布局(实现定义)。
同步形式:
[object Object]
[object Object]
[object Object]
声明于 [object Object]:
[object Object]
[object Object]
- 实现检查 (Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品/Ascend 950PR/Ascend 950DT):
[object Object]必须与标量模板参数[object Object]的类型完全相同。[object Object]/[object Object]元素类型必须相同,且必须是以下之一:[object Object]、[object Object]、[object Object]、[object Object]。[object Object](此为实现强制执行的条件,序列沿列方向生成)。
- 有效区域:
- 实现使用
[object Object]作为序列长度,不参考[object Object]。
- 实现使用
- 临时Tile:
- Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品:C++ API提供带显式
[object Object]Tile的重载,用于向量化实现路径。不带[object Object]的重载使用标量循环。[object Object]必须为4字节类型([object Object]、[object Object]或[object Object])。实现将[object Object]转换为[object Object]使用;应按字节数来规划tmp Tile大小,而不是按[object Object]的类型理解。 - b32元素类型(
[object Object]、[object Object]):最小tmp大小 = 768字节(192个float元素)。 向量化路径在[object Object]内使用两个float子缓冲区:[object Object]位于偏移0,[object Object]位于偏移 +128 floats。[object Object]最多持有64个float元素(256字节)用于初始分数序列,[object Object]最多持有64个float元素(256字节)用于累积结果。最高访问的字节偏移为128 × 4 + 64 × 4 = 768字节(192个float元素)。 - b16元素类型(
[object Object]、[object Object]):最小tmp大小 = 1792字节(448个float元素)。 向量化路径在[object Object]内使用四个子缓冲区:[object Object](float)位于偏移0和 +128,[object Object](half)位于偏移 +256和 +384(以float索引单位计)。[object Object]各最多持有64个float(256字节)用于分数序列生成。[object Object]最多持有16个half元素(32字节)用于float到half的转换。[object Object]最多持有128个half元素(256字节)用于最终的half精度累积。最高访问的字节偏移为384 × 4 + 128 × 2 = 1792字节(448个float元素)。 - 一个方便的形状无关分配大小为2048字节(2KiB),例如
[object Object]。 - Ascend 950PR/Ascend 950DT:
[object Object]Tile被接受但不使用。Ascend 950PR/Ascend 950DT硬件直接使用[object Object]向量指令,无需临时缓冲区。
- Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品:C++ API提供带显式
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]