NVPL Sparse 类型参考#

nvpl_sparse_data_type_t#

本节介绍 NVPL Sparse 中使用的类型。nvpl_sparse_data_type_t 类型是一个枚举器,用于指定数据精度。当数据引用本身不携带类型时(例如 void*),会使用它。例如,它在例程 nvpl_sparse_spmv() 中使用。

含义

数据类型

头文件

NVPL_SPARSE_R_32F

数据类型为 32 位 IEEE-754 浮点型

float

NVPL_SPARSE_C_32F

数据类型为 32 位复数 IEEE-754 浮点型

float _Complex

complex.h

NVPL_SPARSE_R_64F

数据类型为 64 位 IEEE-754 浮点型

double

NVPL_SPARSE_C_64F

数据类型为 64 位复数 IEEE-754 浮点型

double _Complex

complex.h

NVPL_SPARSE_R_8I

数据类型为 8 位整数

int8_t

stdint.h

NVPL_SPARSE_R_32I

数据类型为 32 位整数

int32_t

stdint.h

对于 C++ 代码,可以使用 std::complex<float>std::complex<double>,它们在 <complex> 中。


nvpl_sparse_status_t#

此数据类型表示库函数返回的状态,它可以具有以下值

描述

NVPL_SPARSE_STATUS_SUCCESS

操作已成功完成

NVPL_SPARSE_STATUS_NOT_INITIALIZED

NVPL_SPARSE 库未初始化。

纠正方法: 在函数调用之前调用 nvpl_sparse_create(),并确保 NVPL_SPARSE 库已正确安装

此错误也适用于通用 API ( 通用 API 参考),用于指示矩阵/向量描述符未初始化

NVPL_SPARSE_STATUS_ALLOC_FAILED

NVPL_SPARSE 库内部资源分配失败。这通常是由主机内存分配失败引起的

纠正方法: 在函数调用之前,尽可能释放先前分配的内存

NVPL_SPARSE_STATUS_INVALID_VALUE

向函数传递了不支持的值或参数(例如,负向量大小)

纠正方法: 确保传递的所有参数都具有有效值

NVPL_SPARSE_STATUS_ARCH_MISMATCH

该函数需要处理器架构中不存在的特性

纠正方法: 在具有适当计算能力的处理器上编译并运行应用程序

NVPL_SPARSE_STATUS_EXECUTION_FAILED

程序执行失败。

纠正方法: 检查硬件和 NVPL_SPARSE 库是否已正确安装

NVPL_SPARSE_STATUS_INTERNAL_ERROR

NVPL_SPARSE 内部操作失败

纠正方法: 检查硬件和 NVPL_SPARSE 库是否已正确安装。 此外,检查作为参数传递给例程的内存是否在例程完成之前被释放

NVPL_SPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED

此函数不支持矩阵类型。这通常是由于向函数传递了无效的矩阵描述符引起的

纠正方法: 检查 nvpl_sparse_mat_descr_t descrA 中的字段是否已正确设置

NVPL_SPARSE_STATUS_NOT_SUPPORTED

该函数目前不支持此操作或数据类型组合

NVPL_SPARSE_STATUS_INSUFFICIENT_RESOURCES

用于计算的资源(如内存)不足以完成操作。此错误也可能指示当前计算模式(例如,稀疏矩阵索引的位大小)不允许处理给定的输入


nvpl_sparse_handle_t#

这是一种指向不透明 NVPL Sparse 上下文的指针类型,用户必须在调用任何其他库函数之前通过调用 nvpl_sparse_create() 来初始化它。由 nvpl_sparse_create() 创建和返回的句柄必须传递给每个 NVPL Sparse 函数。


nvpl_sparse_operation_t#

此类型指示应用于相关输入(例如,稀疏矩阵或向量)的操作。

含义

NVPL_SPARSE_OPERATION_NON_TRANSPOSE

选择了非转置操作。

NVPL_SPARSE_OPERATION_TRANSPOSE

选择了转置操作。

NVPL_SPARSE_OPERATION_CONJUGATE_TRANSPOSE

选择了共轭转置操作。


nvpl_sparse_diag_type_t#

此类型指示矩阵对角线元素是否为单位值。始终假定对角线元素存在,但是如果将 NVPL_SPARSE_DIAG_TYPE_UNIT 传递给 API 例程,则该例程假定所有对角线元素均为单位值,并且不会读取或修改这些元素。请注意,在这种情况下,例程假定对角线元素等于 1,而不管这些元素在内存中实际设置为何值。

含义

NVPL_SPARSE_DIAG_TYPE_NON_UNIT

矩阵对角线具有非单位元素。

NVPL_SPARSE_DIAG_TYPE_UNIT

矩阵对角线具有单位元素。


nvpl_sparse_fill_mode_t#

此类型指示矩阵的下三角部分或上三角部分是否存储在稀疏存储中。

含义

NVPL_SPARSE_FILL_MODE_LOWER

存储了下三角部分。

NVPL_SPARSE_FILL_MODE_UPPER

存储了上三角部分。


nvpl_sparse_index_base_t#

此类型指示矩阵索引的基数是零还是壹。

含义

NVPL_SPARSE_INDEX_BASE_ZERO

基索引为零(C 兼容性)。

NVPL_SPARSE_INDEX_BASE_ONE

基索引为壹(Fortran 兼容性)。