aclnnGroupQuant
支持的产品型号
- Atlas A2训练系列产品/Atlas 800I A2推理产品。
接口原型
每个算子分为,必须先调用“aclnnGroupQuantGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnGroupQuant”接口执行计算。
aclnnStatus aclnnGroupQuantGetWorkspaceSize(const aclTensor* x, const aclTensor* scale, const aclTensor* groupIndex, const aclTensor* offsetOptional, int32_t dstType, aclTensor* y, uint64_t* workspaceSize, aclOpExecutor** executor)
aclnnStatus aclnnGroupQuant(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)
功能描述
- 算子功能:对输入x进行分组量化操作。
- 计算公式:
aclnnGroupQuantGetWorkspaceSize
参数说明:
- x(const aclTensor*,计算输入):Device侧的aclTensor,需要做量化的输入。shape为2维,支持,支持ND。数据类型支持FLOAT32,FLOAT16,BFLOAT16。如果dstType为3(INT32),Shape的最后一维需要能被8整除;如果dstType为29(INT4),Shape的最后一维需要能被2整除。
- scale(const aclTensor*,计算输入):Device侧的aclTensor,量化中的scale值。数据类型支持FLOAT32,FLOAT16,BFLOAT16。scale为2维张量(scale的第1维与x的第1维相等)。支持,支持ND。
- groupIndex(const aclTensor*,计算输入):Device侧的aclTensor,Group量化中的GroupIndex值。数据类型支持INT32,INT64。groupIndex为1维张量(维度与scale的第0维相等)。支持,支持ND。
- offsetOptional(const aclTensor*,计算输入):可选参数,Device侧的aclTensor,量化中的offset值。数据类型支持FLOAT32,FLOAT16,BFLOAT16,并且数据类型与scale一致。offsetOptional为1个数。
- dstType(int32_t,计算输入):Host侧整型属性,指定输出的数据类型,该属性数据类型支持:INT32。支持取值2,3,29,分别表示INT8,INT32,INT4。
- y(aclTensor*,计算输出): Device侧的aclTensor。数据类型支持INT8,INT32,INT4。类型为INT32时,Shape的最后一维是x最后一维的1/8,其余维度和x一致; 其他类型时,Shape与x一致。支持空Tensor,支持。支持ND。
- workspaceSize(uint64_t*,出参):返回需要在Device侧申请的workspace大小。
- executor(aclOpExecutor**,出参):返回op执行器,包含了算子计算流程。
返回值:
[object Object]
aclnnGroupQuant
参数说明:
- workspace(void*,入参):在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t,入参):在Device侧申请的workspace大小,由第一段接口aclnnGroupQuantGetWorkspaceSize获取。
- executor(aclOpExecutor*,入参):op执行器,包含了算子计算流程。
- stream(aclrtStream,入参):指定执行任务的 AscendCL Stream流。
返回值:
约束与限制
- 输入scale与输入offsetOptional的数据类型一致。
- 如果属性dstType为29(INT4),那么输入x的Shape的最后一维需要能被2整除。
- 如果属性dstType为3(INT32),那么输入x的Shape的最后一维需要能被8整除,输入x的shape尾轴是输出y的shape尾轴大小的8倍。
- 输入groupIndex必须是非递减序列,最小值不能小于0,最大值必须与输入x的shape的第0维大小相等。
- 输入scale的第0维大小不支持为0。
调用示例
[object Object]