文件最后提交记录最后更新时间
3 天前
1 个月前
20 天前
20 天前
4 天前
20 天前
1 个月前
1 个月前
1 个月前
3 天前
README

SignBitsPack

产品支持情况

产品 是否支持
Ascend 950PR&950DT系列产品
Atlas A3系列产品
Atlas A2系列产品
Atlas 200I/500 A2推理产品 ×
Atlas推理系列产品
Atlas训练系列产品 ×

功能说明

  • 算子功能:将浮点数的符号位提取并打包为uint8字节。每8个浮点数的符号位(0表示非负,1表示负数)打包为1个uint8字节,其中第1个浮点数的符号位对应bit7,第8个对应bit0。主要用于1-bit Adam优化器场景,将符号信息压缩存储。
  • 计算公式:

bi={0xi≥01xi<0b_i = \begin{cases} 0 & x_i \geq 0 \\ 1 & x_i < 0 \end{cases}

yj=∑k=07b8j+k⋅27−ky_j = \sum_{k=0}^{7} b_{8j+k} \cdot 2^{7-k}

out=reshape ⁣({yj},  (size,  L / size))\text{out} = \mathrm{reshape}\!\left(\{y_j\},\; (\text{size},\; L\,/\,\text{size})\right)

其中L=⌈N/8⌉L = \lceil N / 8 \rceilNN为输入元素数。当NN不是8的倍数时,尾部用−1.0-1.0填充(符号位为1)。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 待打包的浮点张量,1D,提取每个元素的符号位。非连续tensor会被自动转为连续。 FLOAT16/FLOAT ND
size 必选属性
  • 输出第一维大小。
  • 取值必须为正整数(size ≥ 1)。
  • 须满足ceil(N/8) % size == 0。
INT64 -
y 输出 符号位打包结果,2D,shape为[size, ceil(N/8)/size],dtype恒为uint8。 UINT8 ND

约束说明

  • 数据格式仅支持ND。
  • 输入x必须为1D(rank=1),不支持标量或多维tensor。
  • 类型组合固定为FLOAT16→UINT8或FLOAT→UINT8,不支持其他dtype组合。
  • 属性size必须为正整数(size ≥ 1),且ceil(N/8)必须能被size整除。
  • 支持空Tensor(N=0),直接返回shape为[size, 0]的空输出。
  • 支持非连续tensor,框架自动转为连续后执行。
  • +0和-0均视为非负(符号位为0);NaN不支持,行为未定义。
  • 默认确定性实现,相同输入始终产生相同输出。

调用说明

调用方式 调用样例 说明
单算子调用 test_aclnn_sign_bits_pack 通过aclnn接口调用SignBitsPack算子。
图模式调用 test_geir_sign_bits_pack 通过GE-IR构图方式调用SignBitsPack算子。