Squeeze
=================

返回删除指定axis中大小为1的维度后的Tensor。由于该算子仅改变张量形状，因此其DSP算子的作用是将数据从输入张量完整拷贝到输出张量。

输入：
        - **src** - 输入地址
        - **elem_num** - 需要拷贝的元素个数。
        - **core_mask** - 核掩码（仅共享存储版本使用）。

输出：
        - **dst** - 输出地址。

支持平台：
        ``FT78NE``
        ``MT7004``

.. note::
    - FT78NE 支持int8, int16, int32, fp32, fp64, cplx64, cplx128
    - MT7004 支持fp16, fp32, int16, int32, cplx64

**共享存储版本:**

.. c:function:: void i8_squeeze_s(int8_t* src, int8_t* dst, size_t elem_num, int core_mask)
.. c:function:: void i16_squeeze_s(int16_t* src, int16_t* dst, size_t elem_num, int core_mask)
.. c:function:: void i32_squeeze_s(int32_t* src, int32_t* dst, size_t elem_num, int core_mask)
.. c:function:: void fp_squeeze_s(float* src, float* dst, size_t elem_num, int core_mask)
.. c:function:: void hp_squeeze_s(float16* src, float16* dst, size_t elem_num, int core_mask)
.. c:function:: void c64_squeeze_s(float* src, float* dst, size_t elem_num, int core_mask)
.. c:function:: void c128_squeeze_s(double* src, double* dst, size_t elem_num, int core_mask)

**C调用示例：**

.. code-block:: c
    :linenos:
    :emphasize-lines: 8

    //MT7004示例
    void main(){
        int core_mask = 0b1111; // 测试单核时核掩码设置为0b0001即可
        float* src = (float*)0x88000000;
        float* dst = (float*)0x98000000;
        int shape[3] = {1, 10, 10};
        size_t elem_num = shape[0] * shape[1] * shape[2];
        fp_squeeze_s(src, dst, elem_num, core_mask);
    }


**私有存储版本:**

.. c:function:: void i8_squeeze_p(int8_t* src, int8_t* dst, size_t elem_num)
.. c:function:: void i16_squeeze_p(int16_t* src, int16_t* dst, size_t elem_num)
.. c:function:: void i32_squeeze_p(int32_t* src, int32_t* dst, size_t elem_num)
.. c:function:: void fp_squeeze_p(float* src, float* dst, size_t elem_num)
.. c:function:: void hp_squeeze_p(float16* src, float16* dst, size_t elem_num)
.. c:function:: void c64_squeeze_p(float* src, float* dst, size_t elem_num)
.. c:function:: void c128_squeeze_p(double* src, double* dst, size_t elem_num)

**C调用示例：**

.. code-block:: c
    :linenos:
    :emphasize-lines: 7

    //MT7004示例
    void main(){
        float16* src = (float16*)0x10000000;
        float16* dst = (float16*)0x10020000;
        int shape[3] = {1, 10, 10};
        size_t elem_num = shape[0] * shape[1] * shape[2];
        hp_squeeze_p(src, dst, elem_num);
    }