LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
tensor_nd_views.c 文件参考

N-D 张量的轴置换与零拷贝重塑. 更多...

tensor_nd_views.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_tensor_nd_permute (const lmmc_tensor_nd_t *in, const size_t *perm, lmmc_tensor_nd_t *out)
 按指定轴顺序置换张量,生成独立数据副本(转置的推广)。
lmmc_status_t lmmc_tensor_nd_reshape_view (const lmmc_tensor_nd_t *src, size_t new_ndim, const size_t *new_dims, lmmc_tensor_nd_t *out_view)
 零拷贝重塑 N-D 张量,返回共享缓冲区的非拥有视图。

详细描述

N-D 张量的轴置换与零拷贝重塑.

在文件 tensor_nd_views.c 中定义.

函数说明

◆ lmmc_tensor_nd_permute()

lmmc_status_t lmmc_tensor_nd_permute ( const lmmc_tensor_nd_t * in,
const size_t * perm,
lmmc_tensor_nd_t * out )

按指定轴顺序置换张量,生成独立数据副本(转置的推广)。

例如 perm={1,0,2} 交换前两个轴;输出 owns_data == 1。

参数
[in]in输入张量.
[in]perm置换数组,长度 in->ndim,为 [0, ndim) 的排列.
[out]out输出张量结构体(调用方提供存储).
返回
LMMC_STATUS_OK 表示成功; LMMC_STATUS_INVALID_ARGUMENT 表示 perm 无效或指针为 NULL; LMMC_STATUS_ALLOCATION_FAILED 表示内存分配失败。
注解
输入张量保持原值;堆分配的输出缓冲区由调用方 调用 lmmc_tensor_nd_destroy 释放。

在文件 tensor_nd_views.c 第 42 行定义.

引用了 LMMC_STATUS_OK, LMMC_TENSOR_MAX_NDIM, lmmc_tensor_nd_permute() , 以及 lmmc_tensor_nd_t::ndim.

被这些函数引用 lmmc_tensor_nd_permute().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_tensor_nd_reshape_view()

lmmc_status_t lmmc_tensor_nd_reshape_view ( const lmmc_tensor_nd_t * src,
size_t new_ndim,
const size_t * new_dims,
lmmc_tensor_nd_t * out_view )

零拷贝重塑 N-D 张量,返回共享缓冲区的非拥有视图。

源张量须为行优先连续存储,新旧形状的元素总数须相同。 输出 owns_data == 0,视图须在源张量销毁前使用。

参数
[in]src源张量(必须为连续存储).
[in]new_ndim新维度数,范围 [1, LMMC_TENSOR_MAX_NDIM].
[in]new_dims新各维大小数组,长度 new_ndim;可指向 out_view->dims.
[out]out_view输出视图结构体;不可与拥有数据的 src 为同一对象.
返回
LMMC_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若维度无效,元素总数溢出或不匹配,源非连续, 拥有数据的源与输出为同一对象,或指针为 NULL.
注解
不分配堆内存;输出与源共享 data,双方数据修改相互可见。

形状数组可与 out_view 别名;读取全部输入元数据后再写入输出。

在文件 tensor_nd_views.c 第 97 行定义.

引用了 lmmc_tensor_nd_t::data, lmmc_tensor_nd_t::dims, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_tensor_nd_reshape_view(), lmmc_tensor_nd_t::ndim, lmmc_tensor_nd_t::owns_data , 以及 lmmc_tensor_nd_t::strides.

被这些函数引用 lmmc_tensor3_reshape_view() , 以及 lmmc_tensor_nd_reshape_view().

函数调用图:
这是这个函数的调用关系图: