接口功能:执行单路旋转位置编码的Inplace计算,直接修改输入张量xRef,不产生新的输出张量。
计算公式:
(1)interleave模式(rotary_mode等于1):
partial_slice参数说明:支持对输入张量的最后一维进行部分旋转位置编码计算。通过
[object Object]指定[start, end)范围,仅对该范围内的数据进行旋转位置编码。
每个算子分为,必须先调用"aclnnInplacePartialRotaryMulGetWorkspaceSize"接口获取入参并根据流程计算所需workspace大小,再调用"aclnnInplacePartialRotaryMul"接口执行计算。
[object Object]
[object Object]
- 确定性计算:
- aclnnInplacePartialRotaryMul默认确定性实现。
- 不支持非连续。
- 仅支持interleave模式(rotary_mode = 1)。
- Inplace执行:输入xRef和输出共享同一个Tensor,计算结果直接写回输入xRef。
- 输入张量xRef的shape为BSND排布。各参数的shape约束可以描述如下:
- 输入张量xRef的最后一维(D)大小不超过1024。
- interleave模式(rotary_mode = 1)下,xRef最后一维(D)大小必须为2的倍数。partialSlice切片长度(即partialSlice[1] - partialSlice[0])必须为2的倍数。
- 输入张量cos、sin最后一维大小必须相同,且必须等于partialSlice的切片长度(即partialSlice[1] - partialSlice[0])。
- cos/sin的shape必须与xRef满足,且存在如下约束:
- [object Object]Ascend 950PR/Ascend 950DT[object Object]:cos/sin的shape当前只支持BSND、B1ND、B11D、111D排布。
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]、[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:cos/sin的shape当前只支持BS1D、B11D排布,即要求B轴保持相等。
- partialSlice约束:sliceStart ≥ 0,sliceEnd ≥ 0,sliceEnd ≤ xRef最后一维(D)大小,sliceLength = sliceEnd - sliceStart >= 0,当sliceEnd和sliceStart相同时,不做旋转位置编码,直接返回。
[object Object]