# Point to Sub-Tensor¶

This function points to sub tensors in the input tensor. This function can be considered as indexing in a multidimensional array without copying.

For example, given a feature map IN in CHW layout of shape [8, 4, 16], the function returns several sequential channels as output tensor without copying the data. Comparing with python syntax, this is similar to slice IN[2:4][:][:] and results in a tensor of shape [2,4,16] that points to channels #2 and #3.

In terms of configuration for considering functions (see Function Configuration Structure):

`start_coord = {2}; coord_num=1; first_out_dim_size=2;`

Similarly, rows can be obtained from one of the channels. IN[3][2:3][:] results in tensor of shape [1,16] (row #2 of channel#3). In terms of configuration for considering functions:

`start_coord = {3, 2}; coord_num=2; first_out_dim_size=1;`

This function performs operations on pointers and does not copy data (only points to subsequent data in input). Hence, this function takes only parameters that can be translated to starting coordinates and size of required data.

## Function Configuration Structure¶

### Definition¶

```
typedef struct {
uint32_t
start_coord[MLI_MAX_RANK];
uint8_t coord_num;
uint8_t first_out_dim_size;
} mli_point_to_subtsr_cfg;
```

## Kernel Interface¶

### Prototype¶

```
mli_status mli_hlp_point_to_subtensor(
const mli_tensor *in,
const mli_point_to_subtsr_cfg *cfg,
mli_tensor *out
);
```

## Conditions for Applying the Function¶

- Input must be a valid tensor (see mli_tensor Structure)
`out`

must point to tensor structure.- Configuration structure fields have the following conditions:
- The number of coordinates must be less than the input tensor rank
- Each coordinate must be less than the corresponding input dimension size

- Sum of
`first_dim_size`

field and the last coordinate must be less than or equal to the corresponding dimension in input tensor.