函数命名规则
HMPP函数库的函数命名需遵循通用格式:[HMPPS|HMPPI]_<name>_<datatype>[_<descriptor>](<parameters>)
例如:HmppResult HMPPS_MulC_64f64s_IS(double val, int64_t *srcDst, uint32_t len, int32_t scale);
在上述例子中:
- 前缀为HMPP(基础函数)、
HMPPI (图像库)、HMPPS (信号库)或HMPPA (音频库)。
- MulC是函数名,表明该函数实现的功能是向量与常数相乘。
- 64f64s表示该函数两个入参的数据类型,分别为64f(double)和64s(long long)。
- 扩充描述_IS:
I:表明该函数是原址操作函数,函数从输入向量依次取值,经过一系列运算以后将结果保存在源向量中。
S:表明该函数使用入参的度量因子对输出作了缩放处理,实际结果可通过输出向量与缩放因子经过计算以后复原,保留计算精度。
- 圆括号里面为该接口传入的参数。
函数名<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所示。
取值 |
说明 |
举例 |
---|---|---|
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>元素指定该函数的所有参数。
参数的排列顺序按如下规则:
- 源操作数,通常是一定长度的向量或常量。
- 目标操作数。
- 其他包含特定操作的参数。
参数命名遵守如下约定:
- 每个参数名指定其功能。
- 输入参数以src命名,特定情形中加上数字或单词进一步说明其含义(例如src2、srcLen)。
- 输出参数以dst命名,与输入参数一样,特定情形中加上数字或单词进一步说明其含义(例如dst2、dstLen)。
- 对于原址操作函数,输入/输出参数以srcDst命名。