FT_DSP.gitlink.net/master/html/_sources/functionlib/dsplib/all.rst.txt

97 lines
4.0 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

All
=================
沿指定轴计算张量的逻辑与 (Logical AND)。如果轴上的所有元素都为真非零则输出为1.0否则为0.0。
.. math::
Y_i = \prod_{x \in S_i} B(x)
其中 :math:`S_i` 是输入张量中用于计算输出 :math:`Y_i` 的切片, :math:`B(x)` 是一个辅助函数:
.. math::
B(x)=\begin{cases} 1, & \text{if } x \neq 0 \\ 0, & \text{if } x = 0 \end{cases}
输入:
- **outer_size** - 规约轴之前的所有维度大小的乘积。
- **inner_size** - 规约轴之后的所有维度大小的乘积。
- **axis_size** - 规约轴本身的大小。
- **src_data** - 输入数据地址。
- **core_mask** - 核掩码。
输出:
- **dst_data** - 输出数据地址。
支持平台:
``FT78NE``
``MT7004``
.. note::
- FT78NE 支持int8, int16, int32, fp32, fp64, cplx64, cplx128
- MT7004 支持fp16, fp32, int16, int32, cplx64
**共享存储版本:**
.. c:function:: void i8_reduce_all_s(int outer_size, int inner_size, int axis_size, int8_t *src_data, int8_t *dst_data, int core_mask)
.. c:function:: void i16_reduce_all_s(int outer_size, int inner_size, int axis_size, int16_t *src_data, int16_t *dst_data, int core_mask)
.. c:function:: void i32_reduce_all_s(int outer_size, int inner_size, int axis_size, int *src_data, int *dst_data, int core_mask)
.. c:function:: void hp_reduce_all_s(int outer_size, int inner_size, int axis_size, half *src_data, half *dst_data, int core_mask)
.. c:function:: void fp_reduce_all_s(int outer_size, int inner_size, int axis_size, float *src_data, float *dst_data, int core_mask)
.. c:function:: void dp_reduce_all_s(int outer_size, int inner_size, int axis_size, double *src_data, double *dst_data, int core_mask)
.. c:function:: void c64_reduce_all_s(int outer_size, int inner_size, int axis_size, float *src_data, float *dst_data, int core_mask)
.. c:function:: void c128_reduce_all_s(int outer_size, int inner_size, int axis_size, double *src_data, double *dst_data, int core_mask)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 11
//FT78NE示例
#include <stdio.h>
#include <all.h>
int main(int argc, char* argv[]) {
float *src_data = (float *)0xA0000000; //input在DDR空间
float *dst_data = (float *)0xB0000000; //output
int outer_size = 2;
int inner_size = 4;
int axis_size = 3;
int core_mask = 0xff;
fp_reduce_all_s(outer_size, inner_size, axis_size, src_data, dst_data, core_mask);
return 0;
}
**私有存储版本:**
.. c:function:: void i8_reduce_all_p(int outer_size, int inner_size, int axis_size, int8_t *src_data, int8_t *dst_data)
.. c:function:: void i16_reduce_all_p(int outer_size, int inner_size, int axis_size, int16_t *src_data, int16_t *dst_data)
.. c:function:: void i32_reduce_all_p(int outer_size, int inner_size, int axis_size, int *src_data, int *dst_data)
.. c:function:: void hp_reduce_all_p(int outer_size, int inner_size, int axis_size, half *src_data, half *dst_data)
.. c:function:: void fp_reduce_all_p(int outer_size, int inner_size, int axis_size, float *src_data, float *dst_data)
.. c:function:: void dp_reduce_all_p(int outer_size, int inner_size, int axis_size, double *src_data, double *dst_data)
.. c:function:: void c64_reduce_all_p(int outer_size, int inner_size, int axis_size, float *src_data, float *dst_data)
.. c:function:: void c128_reduce_all_p(int outer_size, int inner_size, int axis_size, double *src_data, double *dst_data)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 10
//FT78NE示例
#include <stdio.h>
#include <all.h>
int main(int argc, char* argv[]) {
float *src_data = (float *)0x10000000; //input在DDR空间
float *dst_data = (float *)0x10001000; //output
int outer_size = 2;
int inner_size = 4;
int axis_size = 3;
fp_reduce_all_p(outer_size, inner_size, axis_size, src_data, dst_data);
return 0;
}