HiF Microscaling¶
缩放因子¶
HiF4数据格式的比例因子 X 是一种32比特的数据格式,由3个部分组成,共64个元素共享:
- E6M2 (6位指数2位尾数):由所有64个元素共享。
- E1_8 (8个1位指数):各由8个元素共享。
- E1_16 (16个1位指数):各由4个元素共享。
编码规则¶
E6M2是 8 位,记作Ea。E1_8总共是8 位,其中每一位对应 1 位Ebi(i ∈ {0,..., 7})。E1_16总共是 16 位,其中每一位对应 1 位Ecj(j ∈ {0,..., 15})。
数据范围¶
Ea 是第一阶段的 8 位小数 E6M2,由所有 64 个元素共享。
Ebi(i ∈ {0,..., 7})是第二阶段的 1 位指数 E1_8,由数据 8i 到 8i + 7 共享。
Ecj(j ∈ {0,..., 15})是第三阶段的 1 位指数 E1_16,由数据 4j 到 4j + 3 共享。
因此,对于 group=64 中的数据 N(N ∈ {0,..., 63}),最终缩放因子计算公式为:
X = Ea x 2^(Ebi + Ecj)(其中 i = N/8;j = N/4)。共享关系如下表:
| E6M2 | E1_8 | E1_16 | 最终缩放因子 | 共享的数据范围 |
|---|---|---|---|---|
| Ea | Eb0 | Ec0 | Ea x 2^(Eb0 + Ec0) | 0-3 |
| Ec1 | Ea x 2^(Eb0 + Ec1) | 4-7 | ||
| Eb1 | Ec2 | Ea x 2^(Eb1 + Ec2) | 8-11 | |
| Ec3 | Ea x 2^(Eb1 + Ec3) | 12-15 | ||
| Eb2 | Ec4 | Ea x 2^(Eb2 + Ec4) | 16-19 | |
| Ec5 | Ea x 2^(Eb2 + Ec5) | 20-23 | ||
| Eb3 | Ec6 | Ea x 2^(Eb3 + Ec6) | 24-27 | |
| Ec7 | Ea x 2^(Eb3 + Ec7) | 28-31 | ||
| Eb4 | Ec8 | Ea x 2^(Eb4 + Ec8) | 32-35 | |
| Ec9 | Ea x 2^(Eb4 + Ec9) | 36-39 | ||
| Eb5 | Ec10 | Ea x 2^(Eb5 + Ec10) | 40-43 | |
| Ec11 | Ea x 2^(Eb5 + Ec11) | 44-47 | ||
| Eb6 | Ec12 | Ea x 2^(Eb6 + Ec12) | 48-51 | |
| Ec13 | Ea x 2^(Eb6 + Ec13) | 52-55 | ||
| Eb7 | Ec14 | Ea x 2^(Eb7 + Ec14) | 56-59 | |
| Ec15 | Ea x 2^(Eb7 + Ec15) | 60-63 |
图示如下:

其中第一阶的小数 e6m2 的取值计算公式如下:

缩放结果¶
由于我们已经详细阐述了每个组件,现在可以将HiF4单元视为整体并计算其代表值。如图2所示,HiF4格式中的单个组包含四级通过乘法关联的数据层次。定义如下符号:
- 令 ${S1P2}_i$ 表示第 $i$ 个组内元素值,其中 $i \in [1, 64]$
- 令 ${E1_8}_j$ 表示第二级缩放元数据中的第 $j$ 个微指数,其中 $j \in [1, 8]$
- 令 ${E1_16}_k$ 表示第三级缩放元数据中的第 $k$ 个微指数,其中 $k \in [1, 16]$
- 令 ${V_i}_{i=1}^{64}$ 表示HiF4组中的64个实数
基于上述定义,HiF4单元的每个值可按以下方式计算:
计算规则:
-
若 $E6M2 = NaN$,则对所有 $i \in [1, 64]$ 满足: $$V_i = NaN$$
-
否则: $$V_i = E6M2 \times 2^{\left( {E1_8}{\lceil i/8 \rceil} + {E1_16} \times {S1P2}_i$$} \right)