---
title: 函数命名规则
description: "HMPP函数库的函数命名需遵循通用格式：[HMPPS|HMPPI]_<name>_<datatype>[_<descriptor>](<parameters>)"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_hmpp_06_0010.html
sourcePath: /source/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_hmpp_06_0010.html
indexId: 4cd0f8461aecbc3a6218fd82e84a21c51c423c1c060373550feee612cfbaa9d277
---
# 函数命名规则

HMPP函数库的函数命名需遵循通用格式：[HMPPS|HMPPI]_<name>_<datatype>[_<descriptor>](<parameters>)

例如：HmppResult HMPPS_MulC_64f64s_IS(double val, int64_t *srcDst, uint32_t len, int32_t scale);

在上述例子中：

1. 前缀为HMPP（基础函数）、HMPPI（图像库）、HMPPS（信号库）或HMPPA（音频库）。

2. MulC是函数名，表明该函数实现的功能是向量与常数相乘。

3. 64f64s表示该函数两个入参的数据类型，分别为64f（double）和64s（long long）。
4. 扩充描述_IS：
  I：表明该函数是原址操作函数，函数从输入向量依次取值，经过一系列运算以后将结果保存在源向量中。

  S：表明该函数使用入参的度量因子对输出作了缩放处理，实际结果可通过输出向量与缩放因子经过计算以后复原，保留计算精度。

5. 圆括号里面为该接口传入的参数。

#### 函数名<name>

函数名表明该函数的主要功能，格式为：<name>=<operation>[_modifier]。其中：

- operation通常由一个或多个单词、首字母缩略词、缩写组成，描述该函数的基本功能。
- modifier在部分函数中使用，由单词或者缩写组成，描述该函数的扩展功能。例如计算向量范数的norm、normdiff函数，会有一个标识符表明该函数计算的是1-范数（_L1）、2-范数（_L2）还是无穷范数（_Inf），类似的函数还有threshold、fft。


#### 数据类型<datatype>

数据类型表明该函数处理的数据类型，通常为函数参数的数据类型。HMPP中所使用的数据类型请参见基本数据类型。

数据类型的格式为：<bit depth><bit interpretation>。其中：

- bit depth表示位宽度，常用的位宽度有8位、16位、32位、64位。
- bit interpretation表示数据类型，通常有无符号整型u（unsigned integer）、有符号整型s（signed integer）、浮点类型f（float point）、复数c（complex）。


对于只处理一种类型数据的函数，<datatype>域只包含上表中列出的一种值。如果函数处理的源向量和目标向量的数据类型不同，源向量和目标向量各自的数据类型都会体现在函数命名中，并且遵循固定的顺序：<datatype>=<src1Datatype>[src2Datatype][dstDatatype]。

例如，HMPPS_DotProd_32f32fc计算两个数据类型分别为32位浮点型和32位浮点型复数的源向量的点积，并将计算结果存储在32位浮点型复数的目标向量中。

#### 描述符<descriptor>

描述符由一个或多个字母组成，显示更多关于函数的细节，进一步描述函数的功能。

主要描述符如表1所示。


**表1 描述符<descriptor>取值与说明**

| 取值 | 说明 | 举例 |
| --- | --- | --- |
| I | 函数执行的是原址操作，即源向量和目标向量是同一个向量（默认是非原址操作）。 例如，原址加法操作计算公式为：srcDst = srcDst + src | HMPPS\_Add\_16s\_I |
| S | 函数结果饱和并且缩放模式固定（默认饱和且无缩放）。 | HMPPS\_Add\_16s\_S |
| Axx | 保证xx位二进制有效位的舍入。 | HMPPS\_Powx\_32f\_A11 |


- 如果函数有两个或两个以上描述符，描述符在函数名中以字母表顺序依次展现（例如：HMPPS_Add_16s_IS）。
- 对于无描述符的函数，函数名中不包含该字段。


#### 函数参数<parameters>

<parameters>元素指定该函数的所有参数。

参数的排列顺序按如下规则：

1. 源操作数，通常是一定长度的向量或常量。
2. 目标操作数。
3. 其他包含特定操作的参数。

参数命名遵守如下约定：

1. 每个参数名指定其功能。
2. 输入参数以src命名，特定情形中加上数字或单词进一步说明其含义（例如src2、srcLen）。
3. 输出参数以dst命名，与输入参数一样，特定情形中加上数字或单词进一步说明其含义（例如dst2、dstLen）。
4. 对于原址操作函数，输入/输出参数以srcDst命名。
