| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 天前 | ||
| 1 个月前 | ||
| 20 天前 | ||
| 20 天前 | ||
| 4 天前 | ||
| 20 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 天前 |
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 \rceil,NN为输入元素数。当NN不是8的倍数时,尾部用−1.0-1.0填充(符号位为1)。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待打包的浮点张量,1D,提取每个元素的符号位。非连续tensor会被自动转为连续。 | FLOAT16/FLOAT | ND |
| size | 必选属性 |
|
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算子。 |