跳到主要内容

DataTypes

1. 基础数据类型

usaprse 中的数据类型对应 C++ 中的数据类型
usaprse::usparse_intint
usaprse::usparse_uintuint
usaprse::usparse_fp32float
usaprse::usparse_fp64double

2. 稀疏矩阵存储格式

关于稀疏矩阵的各种表示,可以参考相关资料,这里仅介绍 usparse 库中的相关 API(例如:https://docs.nvidia.com/cuda/cusparse/#matrix-formats )。

Coordinate (COO)

COO 格式的表示为: usparse::coo_desc<I, T>,其中 I 是索引,T 是数据类型。 例如,索引为 usaprse::usparse_int ,矩阵中的数据的类型为 usaprse::usparse_fp64,则可以表示为:usparse::coo_desc<usaprse::usparse_int, usparse::usparse_fp64>

usparse::coo_desc<I, T> 的构造函数如下:

// m: 行数,n: 列数;nnz: 非零元素数
usparse::coo_desc(const I m, const I n, const I nnz, const I *coo_row_index, const I *coo_col_index, const T *coo_values);
信息

我们假定 COO 中的数据已经是按行索引排序的。对列索引的是否排序无要求。

Compressed Sparse Row (CSR)

COO 格式的表示为: usparse::csr_desc<I, T>,其中 I 是索引,T 是数据类型。 例如,索引为 usaprse::usparse_int ,矩阵中的数据的类型为 usaprse::usparse_fp64,则可以表示为:usparse::csr_desc<usaprse::usparse_int, usparse::usparse_fp64>

usparse::csr_desc<I, T> 的构造函数如下:

// m: 行数,n: 列数;nnz: 非零元素数
usparse::csr_desc(const I m, const I n, const I nnz, const I *csr_row_offset, const I *csr_col_index, const T *csr_values);
信息

CSR中对列索引是否排序无要求。

Ellpack (ELL)

TODO:

3. 矩阵描述符

  • usparse::mat::usparse_mat_info

API:初始化矩阵描述符

usparse::usparse_status usparse::mat::usparse_create_mat_info(usparse::mat::usparse_mat_info *info);

示例:

usparse::mat::usparse_mat_info info;
usparse::mat::usparse_create_mat_info(&info);

4. 枚举类型

  • usparse::usparse_status
  • usparse::usparse_operation