CTRL[8:6]
|
用于控制数据从L0C Buffer/Unified Buffer/L1 Buffer搬运至Global Memory时原子操作的使能及数据类型选择。
- 3'b000:不使能原子操作;
- 3'b001:使能原子操作,数据类型为float;
- 3'b010:使能原子操作,数据类型为half;
- 3'b011:使能原子操作,数据类型为int16_t;
- 3'b100:使能原子操作,数据类型为int32_t;
- 3'b101:使能原子操作,数据类型为int8_t;
- 3'b110:使能原子操作,数据类型为bfloat16_t。
|
3'b000
|
不涉及
|
CTRL[10:9]
|
用于控制原子操作的类型,仅在CTRL[8:6]使能原子操作时生效。
- 2'b00:选择ADD操作;
- 2'b01:选择MAX操作;
- 2'b10:选择MIN操作。
|
2'b00
|
不涉及
|
CTRL[45]
|
用于控制左右矩阵数据做Mmad计算时的处理方式。
- 1'b0:按照原数据类型进行处理;
- 1'b1:左右矩阵数据均为fp8_e4m3fn_t时,数据视为hifloat8_t进行矩阵乘法计算。其他场景按照原数据类型进行处理。
|
1'b0
|
不涉及
|
CTRL[48]
|
用于控制浮点数计算和浮点数精度转换时的饱和模式,仅在CTRL[60]使能时生效。
- 1'b0:饱和模式,INF输出会被饱和为±MAX, NaN输出会被饱和为0;
- 1'b1:非饱和模式,INF/NAN保持原输出。
该控制位仅支持如下数据类型:
- 浮点数计算时支持half数据类型;
- 浮点数精度转换时支持如下数据类型:hifloat8_t、fp8_e8m0_t、fp8_e5m2_t、fp8_e4m3fn_t、half、bfloat16_t。
|
1'b0
|
配合使用的API:
使用约束:
|
CTRL[50]
|
用于控制浮点数精度转换时的NAN饱和模式,在CTRL[48]设置为饱和模式时生效。
1'b0:NAN输出会被转换为0.0;
1'b1:NAN输出会保持NAN。
该控制位仅支持如下数据类型:
fp8_e8m0_t、fp8_e5m2_t、fp8_e4m3fn_t。
|
1'b0
|
精度转换指令(需要满足数据类型限制)。
|
CTRL[53]
|
用于控制整数计算指令的饱和模式。
1'b0:截断模式,溢出值按目标数据类型位数截断,保留低位,舍弃高位;
1'b1:饱和模式,溢出值饱和到±MAX。
|
1'b0
|
矢量计算API(输入输出数据类型为整数)。
|
CTRL[59]
|
用于控制浮点数转整数或整数转整数时的精度转换饱和模式,仅在CTRL[60]使能时生效。
1'b0:饱和模式:溢出值饱和到±MAX;
1'b1:截断模式:溢出值按目标数据类型位数截断,保留低位,舍弃高位。
|
1'b0
|
精度转换指令。
|
CTRL[60]
|
用于控制饱和模式的全局生效方式。
1'b0:单指令设置饱和;
1'b1:全局设置饱和。
|
1'b1
|
该控制位可与Reg矢量计算API Cast配合使用,或与CTRL[48]、CTRL[59]配合使用,具体配置信息参考表4。
|