asc.language.basic.set_deq_scale
- asc.language.basic.set_deq_scale(scale: float) None
- asc.language.basic.set_deq_scale(scale: float, offset: int, sign_mode: bool) None
- asc.language.basic.set_deq_scale(vdeq: LocalTensor, vdeq_info: VdeqInfo) None
设置DEQSCALE寄存器的值。
对应的Ascend C函数原型
__aicore__ inline void SetDeqScale(half scale) __aicore__ inline void SetDeqScale(float scale, int16_t offset, bool signMode) template <typename T> __aicore__ inline void SetDeqScale(const LocalTensor<T>& vdeq, const VdeqInfo& vdeqInfo)
参数说明
scale(half):scale量化参数,half类型。
scale(float):scale量化参数,float类型。
offset:offset量化参数,int16_t类型,只有前9位有效。
sign_mode:bool类型,表示量化结果是否带符号。
vdeq: 输入量化tensor,大小为128Byte。类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。
vdeqInfo: 存储量化tensor信息的数据结构,结构体内包含量化tensor中的16组量化参数。
调用示例
# Cast scale = 1.0 asc.set_deq_scale(scale) asc.cast(cast_dst_local, cast_dsrc_local, asc.RoundMode.CAST_NONE, src_size) # CastDeq scale = 1.0 offset = 0 sign_mode = True asc.set_deq_scale(scale, offset, sign_mode) asc.cast_deq(dst_local, src_local, count=src_size, is_vec_deq=False, half_block=False) # CastVdeq vdeq_local = asc.LocalTensor(dtype=asc.uint64, pos=asc.TPosition.VECIN, addr=0, tile_size=16) vdeq_scale = [1.0] * 16 vdeq_offset = [0] * 16 vdeq_sign_mode = [False] * 16 vdeq_info = asc.VdeqInfo(vdeq_scale, vdeq_offset, vdeq_sign_mode) asc.set_deq_scale(vdeq_local, vdeq_info) asc.cast_deq(dst_local, src_local, count=src_size, is_vec_deq=True, half_block=False)