下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

aclnnTransQuantParam

支持的产品型号

  • Atlas A2训练系列产品/Atlas 800I A2推理产品。

接口原型

aclnnStatus aclnnTransQuantParam(const float *scaleArray, uint64_t scaleSize, const float *offsetArray, uint64_t offsetSize, uint64_t **quantParam, uint64_t *quantParamSize)

功能描述

将输入scale数据从float类型转换为硬件需要的uint64_t类型,并存储到quantParam中。

aclnnTransQuantParam

  • 参数说明:

    • scaleArray(const float*, 计算输入):指向存储scale数据的内存,用户需要保证scale数据中不存在nan和inf。
    • scaleSize(uint64_t, 计算输入):scale数据的数量,用户需要自行保证scaleSize与scaleArray包含的元素个数相同。
    • offsetArray(const float*, 计算输入):指向存储offset数据的内存,用户需要保证offset数据中不存在nan和inf。。
    • offsetSize(uint64_t, 计算输入):offset数据的数量,用户需要自行保证offsetSize与offsetArray包含的元素个数相同。
    • quantParam(uint64**, 计算输出):指向存储转换得到的quantParam数据的内存的地址。
    • quantParamSize(uint64_t*, 计算输出):存储quantParam数据的数量。
  • 返回值:

    aclnnStatus:返回状态码,具体参见aclnn返回码

第一段接口完成入参校验,出现以下场景时报错:
161001(ACLNN_ERR_PARAM_NULLPTR):1. 参数quantParam是空指针。
                                 2. 参数scaleArray是空指针。
                                 3. 参数quantParamSize是空指针。
161002(ACLNN_ERR_PARAM_INVALID):1. 当scaleArray不为空指针时,参数scaleSize < 1。
                                 2. 当offsetArray不为空指针时,参数offsetSize < 1。
                                 3. 当offsetArray为空指针时,参数offsetSize != 0。
561103(ACLNN_ERR_INNER_NULLPTR): 1. *quantParam为空指针

约束与限制

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考编译与运行样例

#include <iostream>
#include "acl/acl.h"
#include "aclnnop/aclnn_trans_quant_param.h"

#define CHECK_RET(cond, return_expr) \
  do {                               \
    if (!(cond)) {                   \
      return_expr;                   \
    }                                \
  } while (0)

#define LOG_PRINT(message, ...)     \
  do {                              \
    printf(message, ##__VA_ARGS__); \
  } while (0)

int main() {
  float scaleArray[3] = {1.0, 1.0, 1.0};
  uint64_t scaleSize = 3;
  float offsetArray[3] = {1.0, 1.0, 1.0};
  uint64_t offsetSize = 3;
  uint64_t *result = nullptr;
  uint64_t resultSize = 0;
  auto ret = aclnnTransQuantParam(scaleArray, scaleSize, offsetArray, offsetSize, &result, &resultSize);
  CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnTransQuantParam failed. ERROR: %d\n", ret); return ret);
  for (auto i = 0; i < resultSize; i++) {
    LOG_PRINT("result[%ld] is: %ld\n", i, result[i]);
  }
  free(result);
  return 0;
}
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词