NVIDIA-cuSPARSE数据类型2023年(二)

cuSPARSE库涉及多种数据类型,如float、double及cuComplex等,cusparseStatus_t用于表示函数返回状态,包括成功、未初始化、内存分配失败等。cusparseHandle_t是上下文句柄,需先初始化。cusparseMatDescr_t描述矩阵属性,包括类型、填充模式、对角线类型和索引基。错误处理涉及检查硬件、驱动和库的正确安装。
摘要由CSDN通过智能技术生成

请添加图片描述

4 cuSPARSE数据类型参考

4.1 数据类型

  • float,double,cuComplex,cuDoubleComplex后两个类型是来自cuComplex.h

4.2 cusparseStatus_t

表示库函数返回的状态,可以有以下取值:

  • CUSPARSE_STATUS_SUCCESS 操作成功完成
  • CUSPARSE_STATUS_NOT_INITIALIZED 库没有初始化,通常是因为缺少预先调用,或者是硬件配置错误
  • CUSPARSE_STATUS_ALLOC_FAILEDcuSPARSE内存分配失败,通常是由设备内存分配(cudaMalloc)或者主机内存分配失败造成的,可以在函数调用前尽可能地释放之前分配的内存
  • CUSPARSE_STATUS_INVALID_VALUE传入的参数值有误
  • CUSPARSE_STATUS_ARCH_MISMATCH设备问题,需要在具有适当计算运行能力的设备上编译并运行应用程序
  • CUSPARSE_STATUS_EXECUTION_FAILEDGPU程序执行失败。处理步骤这通常是由GPU内核启动失败引起的,这可能是由多种原因引起的:检查硬件、适当版本的驱动程序和cuSPARSE库是否正确安装
  • CUSPARSE_STATUS_INTERNAL_ERROR检查硬件、适当版本的驱动程序和cuSPARSE库是否正确安装。另外,检查作为参数传递给例程的内存是否在例程完成之前被释放
  • CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED此函数不支持矩阵类型。这通常是由于向函数传递无效的矩阵描述符引起的
    纠正方法:检查cusparseMatDescr_t descrA中的字段是否设置正确
  • CUSPARSE_STATUS_NOT_SUPPORTED该函数目前不支持操作或数据类型组合
  • CUSPARSE_STATUS_INSUFFICIENT_RESOURCES 用于计算的资源(如GPU全局内存或共享内存)不足以完成该操作。该错误也可以表明当前的计算模式(例如稀疏矩阵索引的比特大小)不允许处理给定的输入

4.3 cusparseHandle_t

这是一个指针类型,用户必须在调用cusparseCreate()任何其他库函数之前初始化该上下文。由cusparseCreate()创建和返回的句柄必须传递给每个cuSPARSE函数。

4.4. cusparsePointerMode_t

表示向量是否在主机或者GPU上通过引用传递。如果在函数调用中通过引用传递几个标量值,那么它们将遵循相同的单指针模式。指针模式可以分别使用cusparseSetPointerMode()cusparseGetPointerMode()例程设置和检索。

  • CUSPARSE_POINTER_MODE_HOST标量在主机上通过引用传递
  • CUSPARSE_POINTER_MODE_DEVICE标量在设备上通过引用传递

4.5. cusparseOperation_t

此类型指示操作是仅对索引执行,还是对数据和索引执行。

  • CUSPARSE_ACTION_SYMBOLIC操作只对索引进行
  • CUSPARSE_ACTION_NUMERIC操作对数值和索引都执行

4.7. cusparseDirection_t

该类型表示函数cusparse[S|D|C|Z]nnz中密集矩阵的元素应该按行还是按列(假设密集矩阵的内存中有列为主存储)进行解析。此外,BSR格式的块的存储格式也由该类型控制。

  • CUSPARSE_DIRECTION_ROW矩阵应该按行解析
  • CUSPARSE_DIRECTION_COLUMN矩阵应该按列解析

4.8. cusparseMatDescr_t

这个结构用来描述矩阵的形状和性质

typedef struct {
    cusparseMatrixType_t MatrixType;
    cusparseFillMode_t FillMode;
    cusparseDiagType_t DiagType;
    cusparseIndexBase_t IndexBase;
} cusparseMatDescr_t;

4.8.1cusparseDiagType_t

请添加图片描述

  • CUSPARSE_DIAG_TYPE_NON_UNIT矩阵对角线有非单位元素
  • CUSPARSE_DIAG_TYPE_UNIT句怎对角线有单位元素

4.8.2. cusparseFillMode_t

该类型表示矩阵的下部或上部存储在稀疏存储中

  • CUSPARSE_FILL_MODE_LOWER下三角部分被存储
  • CUSPARSE_FILL_MODE_UPPER上三角部分被存储

4.8.3. cusparseIndexBase_t

表示矩阵是从0开始索引还是从1开始索引

  • CUSPARSE_INDEX_BASE_ZERO从0开始索引
  • CUSPARSE_INDEX_BASE_ONE从1开始索引

4.8.4. cusparseMatrixType_t

请添加图片描述

4.9cusparseColorInfo_t

这是指向不透明结构的指针类型,该结构包含csrcolor()中使用的信息。

4.10cusparseSolvePolicy_t

该类型表示是否在bsric02_bufferSize(), bsric02_analysis(), and bsric02()中生成和使用级别信息

  • CUSPARSE_SOLVE_POLICY_NO_LEVEL不生成和使用级别信息
  • CUSPARSE_SOLVE_POLICY_USE_LEVEL
    生成并使用级别信息

请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaggle竞赛指南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值