cuSPARSELt:用于稀疏矩阵-矩阵乘法的高性能 CUDA 库#

NVIDIA cuSPARSELt 是一个高性能 CUDA 库,专门用于通用矩阵-矩阵运算,其中至少一个操作数是稀疏矩阵

D = Activation(\alpha op(A) \cdot op(B) + \beta op(C) + bias)

其中 op(A)/op(B) 指的是诸如转置/非转置之类的原地操作,并且 alpha, beta 是标量或向量。

cuSPARSELt API 允许在算法/操作选择、尾声和矩阵特性(包括内存布局、对齐方式和数据类型)方面具有灵活性。

下载: developer.nvidia.com/cusparselt/downloads

提供反馈: Math-Libs-Feedback@nvidia.com

示例cuSPARSELt 示例 1cuSPARSELt 示例 2

博客文章:

主要特性#

  • NVIDIA 稀疏 MMA tensor core 支持

  • 混合精度计算支持

    输入 A/B

    输入 C

    输出 D

    计算

    块缩放

    支持 SM 架构

    FP32

    FP32

    FP32

    FP32

    8.0, 8.6, 8.7 9.0, 10.0, 12.0

    BF16

    BF16

    BF16

    FP32

    FP16

    FP16

    FP16

    FP32

    FP16

    FP16

    FP16

    FP16

    9.0

    INT8

    INT8

    INT8

    INT32

    8.0, 8.6, 8.7 9.0, 10.0, 12.0

    INT32

    INT32

    FP16

    FP16

    BF16

    BF16

    INT8

    INT8

    INT8

    INT32

    8.0, 8.6, 8.7 9.0, 10.0, 12.0

    INT32

    INT32

    FP16

    FP16

    BF16

    BF16

    E4M3

    FP16

    E4M3

    FP32

    9.0, 10.0, 12.0

    BF16

    E4M3

    FP16

    FP16

    BF16

    BF16

    FP32

    FP32

    E5M2

    FP16

    E5M2

    FP32

    9.0, 10.0, 12.0

    BF16

    E5M2

    FP16

    FP16

    BF16

    BF16

    FP32

    FP32

    E4M3

    FP16

    E4M3

    FP32

    A/B/D_OUT_SCALE = VEC64_UE8M0

    D_SCALE = 32F

    10.0, 12.0

    BF16

    E4M3

    FP16

    FP16

    A/B_SCALE = VEC64_UE8M0

    BF16

    BF16

    FP32

    FP32

    E2M1

    FP16

    E2M1

    FP32

    A/B/D_SCALE = VEC32_UE4M3

    D_SCALE = 32F

    10.0, 12.0

    BF16

    E2M1

    FP16

    FP16

    A/B_SCALE = VEC32_UE4M3

    BF16

    BF16

    FP32

    FP32

  • 矩阵剪枝和压缩功能

  • 激活函数、偏置向量和输出缩放

  • 批量计算(单次运行中处理多个矩阵)

  • GEMM Split-K 模式

  • 自动调优功能(参见 cusparseLtMatmulSearch()

  • NVTX 范围和日志记录功能

支持#

  • 支持的 SM 架构SM 8.0, SM 8.6, SM 8.7, SM 8.9, SM 9.0, SM 10.0, SM 12.0

  • 支持的 CPU 架构和操作系统:

操作系统

CPU 架构

Windows

x86_64

Linux

x86_64, Arm64

索引#