NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

这篇具有很好参考价值的文章主要介绍了NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

cuSPARSE,一个CUDA的稀疏矩阵求解库

官网教程链接

介绍

该库包含了一系列的用于处理稀疏矩阵的线性代数的子例程,适用于0元素占比高达95%的矩阵求解,适用于C与C++调用
库的方案可以被分为4类:(类别1234)

  • 稀疏的向量与密集向量转化的方法(1)
  • 稀疏的矩阵与密集矩阵转化的方法(2)
  • 稀疏的矩阵与密集的向量之间的转化(3)
  • 允许不同格式之间的转化,以及CSR矩阵的压缩(4)

cuSPARSE 库允许开发人员使用GPU进行加速,允许输入与输出数据驻留在GPU内存中,其中包含了许多分配的方法例如

  • cudaMalloc()
  • cudaFree()
  • cudaMemcpy(),
  • cudaMemcpyAsync()
1.1命名习惯
  • 类别123均符合下面的命名习惯
    NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

  • < t >可以是 S, D, C, Z, X,分别 对应float, double, cuComplex, cuDoubleComplex, 以及generic type

  • < matrix data format > 可以是dense, coo, csr, or csc, 分别对应dense, coordinate, compressed sparse row, 以及compressed sparse column 格式

  • < operation>可以是axpyi, gthr, gthrz, roti或sctr,对应于1级函数;也可以是mv或sv,对应于第2级函数,也可以是mm或sm,对应于第3级函数。

所有函数的返回类型都是cusparseStatus_t

1.2异步执行
  • cuSPARSE库函数是相对于主机异步执行的并且在结果准备好之前将控制权返回鬼主机上的应用程序。开发人员可以使用cudaDeviceSynchronize()函数来确保特定的csSPARSE例程已经完成。

  • cudaMemcpy()使用cudaMemcpyDeviceToHost与cudaMemcpyHostToDevice参数将数据在GPU与主机之间进行传输

1.3静态库支持

从6.5版开始,cuSPARSE库也以静态形式作为libcusparse_static交付
例如,要对动态库使用cuSPARSE编译一个小型应用程序,可以使用以下命令:

nvcc myCusparseApp.c -lcusparse -o myCusparseApp>

然而要对静态cuSPARSE库进行编译,必须使用以下命令:

  • nvcc myCusparseApp.c -lcusparse_static -o myCusparseApp>
    也可以使用本机主机c++编译器。根据主机操作系统的不同,链接行上可能需要一些额外的库,如pthread或dl。Linux下建议使用如下命令:

g++ myCusparseApp.c -lcusparse_static -lcudart_static -lpthread -ldl -I <cuda-toolkit-path>/include -L <cuda-toolkit-path>/lib64 -o myCusparseApp

注意,在后一种情况下,cuda是不需要的。如果需要,CUDA运行时将尝试显式地打开CUDA库。在系统没有安装CUDA驱动程序的情况下,这允许应用程序优雅地处理这个问题,并可能在只有cpu的路径可用的情况下运行。

1.4库依赖NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

2(没有具体用处,也是一些介绍,具体移步官网)

3cuSPARSE索引和数据格式

cuSPARSE支持稀疏与密集的向量与矩阵形式

3.1索引基本格式

该库支持基于零和基于一的索引。索引基是通过cusparseIndexBase_t类型选择的,该类型作为一个独立参数或作为矩阵描述符cusparseMatDescr_t类型中的字段传递。

3.1.1向量格式

本节介绍稠密向量格式

3.1.1.1稠密形式

[1 0 0 2 3 0 4 ]这种含有少量0元素的向量

3.1.1.2稀疏形式

上面向量可以表示为[1 2 3 4],[0 3 4 6],第一个表示非零数值,第二个表示索引


3.2矩阵形式

本节讨论稠密矩阵与一些稀疏矩阵

3.2.1稠密形式

矩阵X表示:
  • m 行
  • n 列
  • ldx 矩阵X的前导维数,必须大于等于m,如果大于m,那X就表示存储在内存中的较大矩阵的子矩阵
  • X表示矩阵元素的数据数组,假设为X分配了足够的存储空间来保存所有矩阵元素,并且cuSPARSE库函数可以访问子矩阵之外的值,但永远不会覆盖它们。
    例如,一个有着ldx前导维度的m*n数组可以被如下的索引进行访问NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

3.2.2Coordinate Format(COO)

矩阵A

  • nnz 矩阵中非零元素的个数
  • cooValA 指向长度为nnz的数据数组,该数组以行格式保存所有非零值
  • cooRowIndA 行索引(通常0为开始索引)
  • cooColIndA 列索引(通常0为开始索引)
    例如NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)
  • NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)
  • cooValA为从左到右,从上到下的方式排列非零值

Compressed Sparse Row Format(CSR)

矩阵A参数

  • nnz 非零元素的个数
  • csrValA 行格式保存所有非零值
  • csrRowPtrA 指向长度为m+1的整数数组,该数组包括了
  • csrColIndA 长度为nnz的数组,包含了对应元素的列索引NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)
    NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)
  • csrValA 从左到右,从上到下的非零元素
  • csrRowPtrA 长度为4+1 第i个元素记录了前i+1行非零元素的值,其中第一个0是说明0开始索引
    NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

3.2.4Compressed Sparse Column Format(CSC)

A文章来源地址https://www.toymoban.com/news/detail-409829.html

  • nnz 非零元素的个数
  • cscValA 非零元素的数组
  • cscRowIndA 数组cscValA中相应元素的行下标。
  • cscColPtrA 长度n+1,第i个元素记录了前i+1列非零元素的水量,其中第一个0是说明0开始索引NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)

BSR

BSRX

到了这里,关于NVIDIA-cuSPARSE稀疏矩阵加速求解官方教程精简(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mpi4py结合pytorch求解稀疏椭圆优化控制问题

    { min ⁡ y ( μ ) , u ( μ ) J

    2024年02月07日
    浏览(38)
  • 【数据结构】数组(稀疏矩阵、特殊矩阵压缩、矩阵存储、稀疏矩阵的快速转置、十字链表)

    前几期期链接: 【数据结构】栈与队列的概念和基本操作代码实现 【数据结构】树与二叉树的概念与基本操作代码实现 k维数组的定义: k 维数组 D = { a j 1 , j 2 , . . . , j k } k维数组D={ a_{j_1, j_2, ..., j_k} } k 维数组 D = { a j 1 ​ , j 2 ​ , ... , j k ​ ​ } k 0 称为数组的维数,

    2024年04月09日
    浏览(140)
  • Nvidia官方视频编解码性能

    NVIDIA VIDEO CODEC SDK | NVIDIA Developer 1080P解码性能:  720P解码性能: 详细的参见官方的链接地址,对于GPU的解码fps能力,可以作为评估参照!

    2024年02月11日
    浏览(43)
  • 稀疏矩阵的运算——矩阵相加

    南昌航空大学实验报告 课程名称:    数据结构A   实验名称:        实验五    稀疏矩阵运算        班   级:      XXX           学生姓名:       XXX         学号:      XXXXX       指导教师评定:       XXX     签    名:       XXX    

    2024年02月03日
    浏览(43)
  • 数据结构— 数组、特殊矩阵、稀疏矩阵

    💟作者简介:大家好呀!我是 路遥叶子 ,大家可以叫我 叶子 哦! ❣️     📝个人主页:【路遥叶子的博客】 🏆博主信息: 四季轮换叶 , 一路招摇胜!      专栏 【数据结构-Java语言描述】  【安利Java零基础】 🐋希望大家多多支持😘一起进步呀!~❤️ 🌈若有帮助

    2024年02月02日
    浏览(53)
  • 【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月05日
    浏览(54)
  • 服务器重装nvidia最新显卡驱动(官方驱动)

            有两种方法,一种是用Nvidia官方的驱动,手动安装。另一种是使用系统自带的\\\"软件和更新\\\"附加驱动更新,直接选择应用更新,就可以自动安装了,但是不稳定,要一个个试是否可以使用。 下面是使用官方驱动安装 1、准备工作 更新软件列表等 查看gpu型号 下载驱

    2024年02月05日
    浏览(45)
  • 英伟达 nvidia 官方code llama在线使用

    新一代编程语言模型Code Llama面世:重新定义编程的未来 随着人工智能和机器学习技术的迅速发展,我们现在迎来了一款革命性的大型编程语言模型——Code Llama。该模型是基于Llama 2研发的,为开放模型中的佼佼者,其性能达到了行业领先水平。 模型特点与亮点 Code Llama系列提

    2024年02月08日
    浏览(54)
  • 【华为OD统一考试B卷 | 100分】矩阵稀疏扫描、 稀疏矩阵(C++ Java JavaScript Python)

    在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 运行出现 Runtime Error 0Aborted,请忽略 华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包