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

104 lines
3.7 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.

Fill
=================
使用给定的常量值填充输出数组。该算子将输入的 **value** 按指定数据类型复制,并在多核环境下利用 DMA 高效地完成填充操作。
.. math::
dst_i = value
\quad \text{for} \quad i = 0,1,\dots,N-1
输入:
- **value** - 待填充的常量值地址。
- **param** - Fill 参数结构体指针,描述输出张量的形状与数据类型信息。
- **core_mask** - 核掩码(仅适用于共享存储版本)。
输出:
- **output** - 填充结果地址。
FillParameter 说明:
FillParameter 用于描述 Fill 算子的输出张量信息,其定义如下:
.. code-block:: c
typedef struct FillParameter {
int* shape_; // 张量各维度大小
int ndim_; // 张量维度数
int elem_cnt_; // 张量元素总数
int type_size_; // 单个元素字节大小
} FillParameter;
支持平台:
``FT78NE``
``MT7004``
.. note::
- FT78NE 支持fp, dp, int8, int16, int32, cplx64, cplx128
- MT7004 支持hp, fp, int16, int32, cplx64
**共享存储版本:**
.. c:function:: void i8_fill_s(int8_t* value, int8_t* output, int core_mask, FillParameter* param)
.. c:function:: void i16_fill_s(int16_t* value, int16_t* output, int core_mask, FillParameter* param)
.. c:function:: void i32_fill_s(int32_t* value, int32_t* output, int core_mask, FillParameter* param)
.. c:function:: void hp_fill_s(half* value, half* output, int core_mask, FillParameter* param)
.. c:function:: void fp_fill_s(float* value, float* output, int core_mask, FillParameter* param)
.. c:function:: void dp_fill_s(double* value, double* output, int core_mask, FillParameter* param)
.. c:function:: void c64_fill_s(float* value, float* output, int core_mask, FillParameter* param)
.. c:function:: void c128_fill_s(double* value, double* output, int core_mask, FillParameter* param)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 12
//FT78NE示例
#include <stdio.h>
#include <fill.h>
int main(int argc, char* argv[]) {
float value = 1.0f;
float *output = (float *)0xC0000000;
FillParameter param;
param.elem_cnt_ = 1024;
param.type_size_ = sizeof(float);
int core_mask = 0xff;
fp_fill_s(&value, output, core_mask, &param);
return 0;
}
**私有存储版本:**
.. c:function:: void i8_fill_p(int8_t* value, int8_t* output, FillParameter* param)
.. c:function:: void i16_fill_p(int16_t* value, int16_t* output, FillParameter* param)
.. c:function:: void i32_fill_p(int32_t* value, int32_t* output, FillParameter* param)
.. c:function:: void hp_fill_p(half* value, half* output, FillParameter* param)
.. c:function:: void fp_fill_p(float* value, float* output, FillParameter* param)
.. c:function:: void dp_fill_p(double* value, double* output, FillParameter* param)
.. c:function:: void c64_fill_p(float* value, float* output, FillParameter* param)
.. c:function:: void c128_fill_p(double* value, double* output, FillParameter* param)
**C调用示例**
.. code-block:: c
:linenos:
:emphasize-lines: 11
//FT78NE示例
#include <stdio.h>
#include <fill.h>
int main(int argc, char* argv[]) {
float value = 1.0f;
float *output = (float *)0x10820000;
FillParameter param;
param.elem_cnt_ = 1024;
param.type_size_ = sizeof(float);
fp_fill_p(&value, output, &param);
return 0;
}