|
csky_status | csky_conv_partial_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints) |
| 浮点序列的部分卷积 更多...
|
|
csky_status | csky_conv_partial_fast_opt_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2) |
| Q15序列的部分卷积 (快速版本) 更多...
|
|
csky_status | csky_conv_partial_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints) |
| Q15序列的部分卷积 (快速版本) 更多...
|
|
csky_status | csky_conv_partial_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints) |
| Q31序列的部分卷积 (快速版本) 更多...
|
|
csky_status | csky_conv_partial_opt_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2) |
| Q15序列的部分卷积 更多...
|
|
csky_status | csky_conv_partial_opt_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2) |
| Q7序列的部分卷积 更多...
|
|
csky_status | csky_conv_partial_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints) |
| Q15序列的部分卷积 更多...
|
|
csky_status | csky_conv_partial_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints) |
| Q31序列的部分卷积 更多...
|
|
csky_status | csky_conv_partial_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints) |
| Q7序列的部分卷积 更多...
|
|
部分卷积等价于卷积,只是生成的输出样本是卷积的子集。 每个函数有两个额外添加的参数。 firstIndex
指定输出样本子集的开始序号。 numPoints
是需要计算的输出样本的数量 函数计算的输出范围在: [firstIndex, ..., firstIndex+numPoints-1]
. 输出数组 pDst
包括 numPoints
个值.
可选的输出范围在 [0 srcALen+srcBLen-2]. 如果请求的自己并不在这个范围,则函数返回 CSKY_MATH_ARGUMENT_ERROR. 否则函数返回 CSKY_MATH_SUCCESS.
- 注解
- 定点的行为参考 csky_conv_f32() .
快速版本
- Q31和Q15的部分卷积有快速版本。快速版本需要的周期更多,但是,设计为需要输入信号缩放到不会引起中间计算发生溢出。
Opt版本
- Q15和Q7有Opt版本. 设计使用内部buffer来达到更好的优化效果。 这些版本优化了速度,但是相对的消耗更多的内存。
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR 。
csky_status csky_conv_partial_fast_opt_q15 |
( |
q15_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q15_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q15_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints, |
|
|
q15_t * |
pScratch1, |
|
|
q15_t * |
pScratch2 |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
[in] | *pScratch1 | 指向缓存地址,大小为 max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. |
[in] | *pScratch2 | 指向缓存地址,大小为 min(srcALen, srcBLen). |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
csky_conv_partial_q15()
是这个函数的一个慢速版本,使用了64位累加器防止溢出。
- 限制
- 如果芯片不支持分对齐访问,则定义宏 UNALIGNED_SUPPORT_DISABLE 同时,输入,输出,临时buffer,都应该是32位对齐。
csky_status csky_conv_partial_fast_q15 |
( |
q15_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q15_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q15_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
函数 csky_conv_partial_q15()
是这个函数的一个慢速版本,使用了64位累加器防止溢出
csky_status csky_conv_partial_fast_q31 |
( |
q31_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q31_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q31_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
- 函数
csky_conv_partial_q31()
是这个函数的一个慢速版本,使用了64位累加器防止溢出
csky_status csky_conv_partial_opt_q15 |
( |
q15_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q15_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q15_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints, |
|
|
q15_t * |
pScratch1, |
|
|
q15_t * |
pScratch2 |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
[in] | *pScratch1 | 指向临时缓存,大小为 max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. |
[in] | *pScratch2 | 指向临时缓存,大小为 min(srcALen, srcBLen). |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
- 限制
- 如果芯片不支持分对齐访问,则定义宏 UNALIGNED_SUPPORT_DISABLE 同时,输入,输出,临时buffer,都应该是32位对齐。
函数 csky_conv_partial_fast_q15()
是这个函数的一个快速版本,但是丢失更多的精度。
csky_status csky_conv_partial_opt_q7 |
( |
q7_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q7_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q7_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints, |
|
|
q15_t * |
pScratch1, |
|
|
q15_t * |
pScratch2 |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
[in] | *pScratch1 | 指向临时缓存,大小为 max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. |
[in] | *pScratch2 | 指向临时缓存,大小为 min(srcALen, srcBLen). |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
- 限制
- 如果芯片不支持分对齐访问,则定义宏 UNALIGNED_SUPPORT_DISABLE 同时,输入,输出,临时buffer,都应该是32位对齐。
csky_status csky_conv_partial_q15 |
( |
q15_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q15_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q15_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
函数 csky_conv_partial_fast_q15()
是这个函数的一个快速版本,但是丢失更多的精度
- 函数
csky_conv_partial_opt_q15()
是这个函数的一个快速版本,但是使用了临时缓存空间。
csky_status csky_conv_partial_q31 |
( |
q31_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q31_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q31_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR。
函数 csky_conv_partial_fast_q31()
是这个版本的一个快速版本,但是丢失了更多的精度
csky_status csky_conv_partial_q7 |
( |
q7_t * |
pSrcA, |
|
|
uint32_t |
srcALen, |
|
|
q7_t * |
pSrcB, |
|
|
uint32_t |
srcBLen, |
|
|
q7_t * |
pDst, |
|
|
uint32_t |
firstIndex, |
|
|
uint32_t |
numPoints |
|
) |
| |
- 参数
-
[in] | *pSrcA | 指向第一个输入序列 |
[in] | srcALen | 第一个输入序列的长度 |
[in] | *pSrcB | 指向第二个输入序列 |
[in] | srcBLen | 第二个输入序列的长度 |
[out] | *pDst | 指向输出结果的地址 |
[in] | firstIndex | 输出样本的起始索引 |
[in] | numPoints | 输出样本的数量 |
- 返回
- 函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
- 函数
csky_conv_partial_opt_q7()
是这个函数的一个快速版本,但是使用了临时缓存空间