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

83 lines
3.2 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.

Maximum
=================
对两个输入数据执行逐元素取最大值操作。对于每一对对应的输入元素,比较其大小,并将较大者存入输出地址。
.. math::
output_i = \max(input0_i, input1_i)
输入:
- **input0** - 第一个输入数据地址。
- **input1** - 第二个输入数据地址。
- **length** - 计算长度。
- **core_mask(int, 可选)** - 核掩码(仅适用于共享存储版本)。
输出:
- **output** - 计算结果地址。
支持平台:
``FT78NE``
``MT7004``
.. note::
- FT78NE 支持int8 (i8), int16 (i16), int32 (i32), fp32 (fp), fp64 (dp)
- MT7004 支持int16 (i16), int32 (i32), fp16 (hp), fp32 (fp)
- 两个输入数据与输出数据的数据类型必须一致。
**共享存储版本:**
.. c:function:: void i8_maximum_s(int8_t* input0, int8_t* input1, int8_t* output, int length, int core_mask)
.. c:function:: void i16_maximum_s(int16_t* input0, int16_t* input1, int16_t* output, int length, int core_mask)
.. c:function:: void i32_maximum_s(int32_t* input0, int32_t* input1, int32_t* output, int length, int core_mask)
.. c:function:: void hp_maximum_s(half* input0, half* input1, half* output, int length, int core_mask)
.. c:function:: void fp_maximum_s(float* input0, float* input1, float* output, int length, int core_mask)
.. c:function:: void dp_maximum_s(double* input0, double* input1, double* output, int length, int core_mask)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 11
// FT78NE 示例(共享存储多核并行)
#include <stdio.h>
#include "78NE/utils.h"
int main(int argc, char* argv[]) {
float *in0 = (float *)0xA0000000; // 输入0在共享存储空间
float *in1 = (float *)0xA1000000; // 输入1在共享存储空间
float *out = (float *)0xB0000000; // 输出在共享存储空间
int length = 960001;
int core_mask = 0xFF; // 使用所有核心
fp_maximum_s(in0, in1, out, length, core_mask);
return 0;
}
**私有存储版本:**
.. c:function:: void i8_maximum_p(int8_t* input0, int8_t* input1, int8_t* output, int length)
.. c:function:: void i16_maximum_p(int16_t* input0, int16_t* input1, int16_t* output, int length)
.. c:function:: void i32_maximum_p(int32_t* input0, int32_t* input1, int32_t* output, int length)
.. c:function:: void hp_maximum_p(half* input0, half* input1, half* output, int length)
.. c:function:: void fp_maximum_p(float* input0, float* input1, float* output, int length)
.. c:function:: void dp_maximum_p(double* input0, double* input1, double* output, int length)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 10
// MT7004 示例(私有存储单核)
#include <stdio.h>
int main(int argc, char* argv[]) {
// 输入与输出均位于芯片私有存储空间
int *in0 = (int *)0x10000000;
int *in1 = (int *)0x10001000;
int *out = (int *)0x10002000;
int length = 1024;
i32_maximum_p(in0, in1, out, length);
return 0;
}