SetCtrlSpr(ISASI)
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
x |
|
x |
|
x |
|
x |
|
x |
|
x |
功能说明
对CTRL寄存器(控制寄存器)的特定比特位进行设置。
函数原型
template <int8_t startBit, int8_t endBit> __aicore__ static inline void SetCtrlSpr(int64_t value)
参数说明
参数名 |
描述 |
|---|---|
startBit |
起始比特位索引。 |
endBit |
终止比特位索引。 |
参数名 |
输入/输出 |
描述 |
|---|---|---|
value |
输入 |
起止比特位上新设置的值。 |
CTRL寄存器比特位 |
功能 |
默认值 |
配合使用的API |
|---|---|---|---|
CTRL[8:6] |
用于控制数据从L0C Buffer/Unified Buffer/L1 Buffer搬运至Global Memory时原子操作的使能及数据类型选择。
|
3'b000 |
不涉及 |
CTRL[10:9] |
用于控制原子操作的类型,仅在CTRL[8:6]使能原子操作时生效。
|
2'b00 |
不涉及 |
CTRL[45] |
用于控制左右矩阵数据做Mmad计算时的处理方式。
|
1'b0 |
不涉及 |
CTRL[48] |
用于控制浮点数计算和浮点数精度转换时的饱和模式,仅在CTRL[60]使能时生效。
该控制位仅支持如下数据类型:
|
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。 |
全局使能位 |
控制位 |
功能描述 |
|---|---|---|
CTRL[60] = 1'b0 |
Reg矢量计算Cast API的trait模板参数中satMode设置为SatMode::NO_SAT。 |
单指令非饱和模式。 |
Reg矢量计算Cast API的trait模板参数中satMode设置为 SatMode::SAT。 |
单指令饱和模式。 |
|
CTRL[60] = 1'b1 |
CTRL[48] = 1'b1 |
全局非饱和模式(浮点数计算和浮点数精度转换)。 |
CTRL[48] = 1'b0 |
全局饱和模式(浮点数计算和浮点数精度转换)。 |
|
CTRL[59] = 1'b1 |
全局非饱和模式(浮点数转整数或整数转整数时的精度转换)。 |
|
CTRL[59] = 1'b0 |
全局饱和模式(浮点数转整数或整数转整数时的精度转换)。 |
返回值说明
无
约束说明
- 仅支持CTRL[8:6]、CTRL[10:9]、CTRL[45]、CTRL[48]、CTRL[50]、CTRL[53]、CTRL[59]、CTRL[60]比特位。
- 对于CTRL[8:6]和CTRL[10:9]的设置,已封装原子操作API,建议通过这些原子操作API进行配置。