# Tensorlistgetitem — MindSpore Signal+ 使用手册 alpha 文档

# Tensorlistgetitem

从张量列表中获取指定索引的张量数据。该算子将输入张量列表中的特定元素复制到输出张量中，支持多种数据类型。

\[\text{output\_tensor} = \text{input\_tensor\_list}[\text{index}]\]

其中 input_tensor_list 是输入的张量列表，index 是要获取的元素索引，output_tensor 是输出张量。

输入：

  - src - 输入张量指针，指向要获取的张量数据。

  - dst - 输出张量指针，用于存储获取的张量数据。

  - data_type - 数据类型对应的字节数，如果为0，表示kTypeUnknown（未知类型）。

  - length - 元素个数，默认dst和src元素个数相等。

  - core_mask - 核掩码（int），仅共享存储版本需要。

输出：

  - dst - 输出张量指针，存储从输入张量列表获取的数据。

支持平台：

  `FT78NE` `MT7004`

备注

- 该算子不区分具体的数据类型，数据类型信息通过data_type参数传递

- 当data_type为0（kTypeUnknown）时，算子会将输出张量的内存清零

- 当data_type不为0时，算子会按字节复制数据

- 调用前需要确保dst指向的内存空间足够大（至少length个元素）

共享存储版本：

void tensorlistgetitem_s(void *src, void *dst, int data_type, int length, int core_mask)

C调用示例（共享存储版本）：

     1//FT78NE示例
     2#include <stdio.h>
     3#include <tensorlistgetitem.h>
     4
     5int main(int argc, char* argv[]) {
     6    // 假设在DDR空间
     7    float *src = (float *)0xA0000000;  // 输入张量数据
     8    float *dst = (float *)0xB0000000;  // 输出张量数据
     9    int data_type = 4;  // float类型，4字节
    10    int length = 10;    // 10个元素
    11    int core_mask = 0xff;  // 核掩码
    12
    13    // 调用共享存储版本的函数
    14    tensorlistgetitem_s(src, dst, data_type, length, core_mask);
    15
    16    return 0;
    17}

共享存储版本：

void tensorlistgetitem_p(void *src, void *dst, int data_type, int length)

C调用示例（私有存储版本）：

     1#include <stdio.h>
     2#include <tensorlistgetitem.h>
     3
     4int main(int argc, char* argv[]) {
     5    void *src = (void *)0x10000000;
     6    void *dst = (void *)0x10010000;
     7    int data_type = 0;  // kTypeUnknown
     8    int length = 10;    // 10个元素（以字节为单位）
     9
    10    // 当data_type为0时，dst将被清零
    11    tensorlistgetitem_p(src, dst, data_type, length);
    12
    13    return 0;
    14}