|
LMMC
Lamina Mathematic core
|
块稀疏(BSR)存储:创建、稠密互转与销毁。 更多...
#include <string.h>#include "memory_bridge.h"#include "internal.h"#include "sparse_internal.h"#include "lmmc/sparse.h"函数 | |
| lmmc_status_t | lmmc_sparse_bsr_create (size_t rows, size_t cols, size_t block_size, size_t nnz_blocks, lmmc_sparse_bsr_t *out) |
| 创建 BSR 矩阵,数组内容未初始化。 | |
| lmmc_status_t | lmmc_sparse_bsr_to_dense (const lmmc_sparse_bsr_t *bsr, lmmc_mat_t *out) |
| 将 BSR 矩阵展开为稠密矩阵。 | |
| lmmc_status_t | lmmc_sparse_dense_to_bsr (const lmmc_mat_t *dense, size_t block_size, lmmc_real_t eps, lmmc_sparse_bsr_t *out) |
| 将稠密矩阵转换为 BSR 格式。 | |
| void | lmmc_sparse_bsr_destroy (lmmc_sparse_bsr_t *bsr) |
| 销毁 BSR 矩阵,按所有权释放底层缓冲区。 | |
块稀疏(BSR)存储:创建、稠密互转与销毁。
在文件 sparse_block.c 中定义.
| lmmc_status_t lmmc_sparse_bsr_create | ( | size_t | rows, |
| size_t | cols, | ||
| size_t | block_size, | ||
| size_t | nnz_blocks, | ||
| lmmc_sparse_bsr_t * | out ) |
创建 BSR 矩阵,数组内容未初始化。
| [in] | rows | 块行数。 |
| [in] | cols | 块列数。 |
| [in] | block_size | 块维度 r,每块为 rxr。 |
| [in] | nnz_blocks | 非零块数量。 |
| [out] | out | 输出 BSR 矩阵。 |
在文件 sparse_block.c 第 12 行定义.
引用了 lmmc_sparse_bsr_t::block_size, lmmc_sparse_bsr_t::col_idx, lmmc_sparse_bsr_t::cols, lmmc_memory_alloc(), lmmc_memory_free(), lmmc_sparse_bsr_create(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_bsr_t::nnz_blocks, lmmc_sparse_bsr_t::owns_data, lmmc_sparse_bsr_t::row_ptr, lmmc_sparse_bsr_t::rows , 以及 lmmc_sparse_bsr_t::values.
被这些函数引用 lmmc_sparse_bsr_create() , 以及 lmmc_sparse_dense_to_bsr().
| lmmc_status_t lmmc_sparse_bsr_to_dense | ( | const lmmc_sparse_bsr_t * | bsr, |
| lmmc_mat_t * | out ) |
将 BSR 矩阵展开为稠密矩阵。
| [in] | bsr | 输入 BSR 矩阵。 |
| [out] | out | 已创建的稠密矩阵,维度须为 (rows*block_size) x (cols*block_size)。 |
在文件 sparse_block.c 第 153 行定义.
引用了 lmmc_sparse_bsr_t::block_size, lmmc_sparse_bsr_t::col_idx, lmmc_mat_t::cols, lmmc_sparse_bsr_t::cols, lmmc_mat_t::data, lmmc_mat_fill(), LMMC_REAL_CLEAR, LMMC_REAL_INIT, LMMC_REAL_SET_D, lmmc_sparse_bsr_to_dense(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_bsr_t::nnz_blocks, lmmc_sparse_bsr_t::row_ptr, lmmc_mat_t::rows, lmmc_sparse_bsr_t::rows , 以及 lmmc_sparse_bsr_t::values.
被这些函数引用 lmmc_sparse_bsr_to_dense().
| lmmc_status_t lmmc_sparse_dense_to_bsr | ( | const lmmc_mat_t * | dense, |
| size_t | block_size, | ||
| lmmc_real_t | eps, | ||
| lmmc_sparse_bsr_t * | out ) |
将稠密矩阵转换为 BSR 格式。
丢弃块内全部元素绝对值均 <= eps 的块。
| [in] | dense | 输入稠密矩阵,各维度须为 block_size 的整数倍。 |
| [in] | block_size | 块维度 r。 |
| [in] | eps | 丢弃阈值。 |
| [out] | out | 输出 BSR 矩阵。 |
在文件 sparse_block.c 第 192 行定义.
引用了 lmmc_mat_t::cols, lmmc_mat_t::data, LMMC_REAL_CLEAR, LMMC_REAL_CMP, LMMC_REAL_INIT, LMMC_REAL_SET_D, lmmc_sparse_bsr_create(), lmmc_sparse_dense_to_bsr(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_mat_t::rows.
被这些函数引用 lmmc_sparse_dense_to_bsr().
| void lmmc_sparse_bsr_destroy | ( | lmmc_sparse_bsr_t * | bsr | ) |
销毁 BSR 矩阵,按所有权释放底层缓冲区。
在文件 sparse_block.c 第 255 行定义.
引用了 lmmc_sparse_bsr_t::block_size, lmmc_sparse_bsr_t::col_idx, lmmc_sparse_bsr_t::cols, lmmc_memory_free(), lmmc_sparse_bsr_destroy(), lmmc_sparse_bsr_t::nnz_blocks, lmmc_sparse_bsr_t::owns_data, lmmc_sparse_bsr_t::row_ptr, lmmc_sparse_bsr_t::rows , 以及 lmmc_sparse_bsr_t::values.
被这些函数引用 lmmc_sparse_bsr_destroy().