SetDeqScale
功能说明
设置DEQSCALE寄存器的值。
函数原型
- 用于AddDeqRelu指令与Cast指令的s322f16场景
1
__aicore__ inline void SetDeqScale(half scale)
- 用于CastDeq(isVecDeq=false)的场景
1
__aicore__ inline void SetDeqScale(float scale, int16_t offset, bool signMode)
- 用于CastDeq(isVecDeq=true)的场景
1 2
template <typename T> __aicore__ inline void SetDeqScale(const LocalTensor<T>& vdeqTensor, const VdeqInfo& vdeqInfo)
参数说明
参数名 |
输入/输出 |
描述 |
||
---|---|---|---|---|
scale(half) |
输入 |
half类型,表示一个half类型的数据。 Atlas推理系列产品AI Core:用于AddDeqRelu指令设置DEQSCALE寄存器的值。 Atlas A2训练系列产品/Atlas 800I A2推理产品,用于Cast指令的s322f16场景设置DEQSCALE寄存器的值。 |
||
scale(float) |
输入 |
float类型,表示一个float类型的数据。 用于CastDeq(isVecDeq=false)场景设置DEQSCALE寄存器的值。 |
||
offset |
输入 |
int16_t类型,表示一个s9类型的offset,入参只有前9位有效。 用于CastDeq(isVecDeq=false)的场景,设置offset。 |
||
signMode |
输入 |
bool类型,表示量化结果是否带符号。 用于CastDeq(isVecDeq=false)的场景,设置signMode。 |
||
vdeqTensor |
输入 |
用于CastDeq(isVecDeq=true)的场景,输入量化tensor,大小为128Byte。 类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。 LocalTensor的起始地址需要32字节对齐。 支持的数据类型为uint64_t。 |
||
vdeqInfo |
输入 |
存储量化tensor信息的数据结构,结构体内包含量化tensor中的16组量化参数
|
返回值
无
支持的型号
Atlas推理系列产品AI Core
Atlas A2训练系列产品/Atlas 800I A2推理产品
约束说明
无
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
AscendC::LocalTensor<int8_t> dstLocal; AscendC::LocalTensor<int16_t> srcLocal; AscendC::LocalTensor<uint64_t> tmpBuffer; uint32_t srcSize = 256; // Cast AscendC::LocalTensor<half> castDstLocal; AscendC::LocalTensor<int32_t> castSrcLocal; half scale = 1.0; AscendC::SetDeqScale(scale); AscendC::Cast(castDstLocal, castSrcLocal, AscendC::RoundMode::CAST_NONE, srcSize); // CastDeq float scale = 1.0; int16_t offset = 0; bool signMode = true; AscendC::SetDeqScale(scale, offset, signMode); AscendC::CastDeq<int8_t, int16_t, false, false>(dstLocal, srcLocal, srcSize); // CastVdeq float vdeqScale[16] = { 0 }; int16_t vdeqOffset[16] = { 0 }; bool vdeqSignMode[16] = { 0 }; for (int i = 0; i < 16; i++) { vdeqScale[i] = 1.0; vdeqOffset[i] = 0; vdeqSignMode[i] = true; } AscendC::VdeqInfo vdeqInfo(vdeqScale, vdeqOffset, vdeqSignMode); AscendC::SetDeqScale<uint64_t>(tmpBuffer, vdeqInfo); AscendC::CastDeq<int8_t, int16_t, true, false>(dstLocal, srcLocal, srcSize); |
父主题: 量化设置