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

块稀疏(BSR)存储:创建、稠密互转与销毁。 更多...

#include <string.h>
#include "memory_bridge.h"
#include "internal.h"
#include "sparse_internal.h"
#include "lmmc/sparse.h"
sparse_block.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

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_sparse_bsr_create()

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_sparse_bsr_to_dense()

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_sparse_dense_to_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 格式。

丢弃块内全部元素绝对值均 <= 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().

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

◆ lmmc_sparse_bsr_destroy()

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().

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