|
LMMC
Lamina Mathematic core
|
N-D 张量的轴置换与零拷贝重塑. 更多...
函数 | |
| 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_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 | 输出张量结构体(调用方提供存储). |
在文件 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_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 为同一对象. |
形状数组可与 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().