版本发布说明#

cuSPARSELt v0.7.0#

新功能:

  • 引入对Blackwell的支持(SM 10.0SM 12.0)。

  • SM 10.0SM 12.0架构新增了以下数据类型组合的块缩放内核:

    • E4M3 输入/输出,FP32 Tensor Core计算;矩阵C的数据类型可以是FP16BF16

    • E4M3 输入, FP16 输出, FP32 Tensor Core 计算

    • E4M3 输入, BF16 输出, FP32 Tensor Core 计算

    • E4M3 输入, FP32 输出, FP32 Tensor Core 计算

    • E2M1 输入/输出,FP32 Tensor Core计算;矩阵C的数据类型可以是FP16BF16

    • E2M1 输入, FP16 输出, FP32 Tensor Core 计算

    • E2M1 输入, BF16 输出, FP32 Tensor Core 计算

    • E2M1 输入, FP32 输出, FP32 Tensor Core 计算

API变更:

  • Introduced the following API changes to set up the scaling factors for the block scaled kernels:
    • 新增枚举类型 cusparseLtMatmulMatrixScale_t 用于指定缩放模式,该模式定义了如何解释缩放因子指针。

    • 新增了cusparseLtMatmulAlgSelection_t枚举器值

      • CUSPARSELT_MATMUL_{A,B,C,D, D_OUT}_SCALE_MODE 用于为对应矩阵指定类型为 cusparseLtMatmulMatrixScale_t 的缩放模式。

      • CUSPARSELT_MATMUL_{A,B,C,D, D_OUT}_SCALE_POINTER 用于设置设备指针,指向对应矩阵的标量或缩放因子张量,具体取决于矩阵的缩放模式。

  • 为枚举类型 cusparseLtSplitKMode_t 新增了以下值:

    • CUSPARSELT_HEURISTIC

    • CUSPARSELT_DATAPRALLEL

    • CUSPARSELT_SPLITK

    • CUSPARSELT_STREAMK

已解决的问题

  • 修复了多GPU配置导致的崩溃或卡死问题。

兼容性说明:

  • cuSPARSELt 需要 CUDA 12.8 或更高版本,以及兼容的驱动程序(参见 CUDA 驱动程序发行说明)。

  • 已不再支持 Ubuntu 18.04RHEL 7CentOs 7

  • cuSPARSELt 数据类型的大小,包括 cusparseLtHandle_tcusparseLtMatDescriptor_tcusparseLtMatmulDescAttribute_tcusparseLtMatmulAlgSelection_tcusparseLtMatmulPlan_t,已缩减至512字节。

已知问题

  • cusparseLtSpMMAompressedSize2() 分配的内存略多于实际需求。


cuSPARSELt v0.6.3#

已解决的问题

  • 如果在Arm64架构上使用cusparseLtSpMMACompressSize2()cusparseLtSpMMACompress()函数,稀疏矩阵乘法(GEMM)可能会产生错误结果。

兼容性说明:

  • 新增对Ubuntu 24.04的支持。


cuSPARSELt v0.6.2#

新功能:

  • 新增对Orin的支持 (SM 8.7)。

  • 提升了以下针对SM 8.0架构的内核性能

    • FP16 输入/输出,FP32 Tensor Core 累加

    • BF16 输入/输出,FP32 Tensor Core 累加

    • INT8 输入, FP16 输出, INT32 Tensor Core 计算

    • INT8 输入, BF16 输出, INT32 Tensor Core 计算

    • INT8 输入, INT32 输出, INT32 Tensor Core 计算

API变更:

  • 新增了一个枚举值cusparseLtMatmulDescAttribute_t::CUSPARSELT_MATMUL_SPARSE_MAT_POINTER,用于设置指向剪枝稀疏矩阵的指针。


cuSPARSELt v0.6.1#

依赖项:

  • 移除了对CUDA驱动库的静态链接(Linux上是libcuda.so,Windows上是cuda.lib)。

兼容性说明:

  • 对矩阵大小的限制(cusparseLtStructuredDescriptorInitcusparseLtDenseDescriptorInit)已放宽。矩阵 CD 每个维度(行和列)的最大元素数量限制为2097120。

已解决的问题

  • cusparseLtSpMMACompressedSize()cusparseLtSpMMACompressedSize2() 所需内存稍少。

  • 稀疏矩阵乘法(GEMM)在SM 8.0架构上可能产生错误结果。


cuSPARSELt v0.6.0#

新功能:

  • 新增对Hopper架构的支持 (SM 9.0)。

  • SM 9.0架构新增了以下数据类型组合的内核:

    • FP16 输入/输出,FP16 Tensor Core计算

    • E4M3 输入/输出,FP32 Tensor Core计算;矩阵C的数据类型可以是FP16BF16

    • E4M3 输入, FP16 输出, FP32 Tensor Core 计算

    • E4M3 输入, BF16 输出, FP32 Tensor Core 计算

    • E4M3 输入, FP32 输出, FP32 Tensor Core 计算

    • E5M2 输入/输出,FP32 Tensor Core计算;矩阵C的数据类型可以是FP16BF16

    • E5M2 输入, FP16 输出, FP32 Tensor Core 计算

    • E5M2 输入, BF16 输出, FP32 Tensor Core 计算

    • E5M2 输入, FP32 输出, FP32 Tensor Core 计算

驱动程序要求:

  • cuSPARSELt 需要 CUDA 驱动程序版本 r535 TRD7r550 TRD1 或更高版本。

API变更:

  • 以下API已被弃用:cusparseLtSpMMAPrune2(), cusparseLtSpMMAPruneCheck2(), cusparseLtSpMMACompressedSize2(), cusparseLtSpMMACompress2().

依赖项:

  • cuSPARSELt 现在需要链接到 CUDA 驱动库(Linux 上是 libcuda.so,Windows 上是 cuda.lib)。

已知问题

  • cusparseLtSpMMAompressedSize()cusparseLtSpMMAompressedSize2() 分配的内存会略多于实际需求。这个问题将在下一版本中解决。


cuSPARSELt v0.5.2#

新功能:

  • 新增了对以下数据类型组合的内核支持:INT8输入,BF16输出,INT32张量核心累加

  • 符号在静态库中被混淆。

兼容性说明:

  • 新增了对RHEL 7CentOs 7的支持。

  • cusparseLtMatmulSearch()中,split-k功能现在支持更广泛的问题维度范围。

  • CUSPARSE_COMPUTE_16F, CUSPARSE_COMPUTE_TF32, CUSPARSE_COMPUTE_TF32_FAST 枚举值已从 cusparseComputeType 枚举器中移除,并替换为 CUSPARSE_COMPUTE_32F,以更准确地表达张量核心级别的计算精度。


cuSPARSELt v0.5.0#

新功能:

  • 新增了支持以下数据类型组合的新内核:INT8输入,INT32输出,INT32张量核心累加

兼容性说明:

  • cuSPARSELt 需要 CUDA 12.0 或更高版本,以及兼容的驱动程序(参见CUDA 驱动程序发行说明)。

  • cusparseLtMatmulAlgSelectionInit() 无法保证算法ID alg 的排序与v0.4.0版本一致。


cuSPARSELt v0.4.0#

新功能:

  • 引入 SM 8.9 兼容性

  • cuSPARSELt描述符的初始化时间已显著提升

  • cusparseLtMatmulSearch() 的效率已得到提升

  • 移除了所有内部内存分配

  • 新增了一个内核,支持以下数据类型组合:INT8输入,INT32 Tensor Core计算,FP16输出

  • 新增了cusparseLtGetVersion()cusparseLtGetProperty()函数用于获取库版本信息

API变更:

  • cusparseLtSpMMACompressedSize(), cusparseLtSpMMACompress(), cusparseLtSpMMACompressedSize2(), cusparseLtSpMMACompress2() 新增了一个参数,用于避免内部内存分配并支持用户提供的设备内存缓冲区进行压缩

兼容性说明:

  • cuSPARSELt 需要 CUDA 驱动程序 470.xx (CUDA 11.4) 或更高版本

  • cuSPARSELt现在使用静态版本的cudart

  • 已移除对Ubuntu 16.04 (gcc-5)的支持


cuSPARSELt v0.3.0#

新功能:

  • 新增支持alpha和beta标量向量(每通道缩放)

  • 新增支持GeLU缩放

  • 新增支持Split-K模式

  • 全面支持日志功能和NVTX范围

API变更:

  • cusparseLtMatmulGetWorkspace() API 用于获取 cusparseLtMatmul() 所需的工作空间大小

已解决的问题:

  • 修复了关于结构化矩阵大小约束的文档问题


cuSPARSELt v0.2.0#

新功能:

  • 新增支持激活函数偏置向量

    • 为所有内核设置ReLU激活函数的上限和阈值

    • 针对INT8输入/输出的GeLU激活函数,支持INT32张量核心计算内核

  • 新增对批量稀疏GEMM的支持:

    • 单个稀疏矩阵 / 多个稠密矩阵 (广播)

    • 多个稀疏和密集矩阵

    • 批量偏置向量

兼容性说明:

  • cuSPARSELt 不再需要 nvrtc

  • Ubuntu 16.04 (gcc-5)的支持现已弃用,将在未来版本中移除


cuSPARSELt v0.1.0#

新功能:

  • 新增支持 Windows x86-64Linux Arm64 平台

  • 引入 SM 8.6 兼容性

  • 新增的内核:

    • FP32 输入/输出,TF32 Tensor Core 计算

    • TF32 输入/输出,TF32 Tensor Core 计算

  • 针对SM 8.0内核的性能优化(最高可达90% SOL)

  • 用于压缩和剪枝的新API,与cusparseLtMatmulPlan_t解耦

兼容性说明:

  • cuSPARSELt 需要 CUDA 11.2 或更高版本

  • cusparseLtMatDescriptor_t 必须使用 cusparseLtMatDescriptorDestroy 函数销毁

  • 无论是静态还是共享库,都必须与nvrtc库链接

  • 在Linux系统上,无论是静态还是共享库都必须与dl库链接

已解决的问题:

  • CUSPARSELT_MATMUL_SEARCH_ITERATIONS 现在已正确处理


cuSPARSELt v0.0.1#

新功能:

  • 初始版本发布

  • 支持 Linux x86_64SM 8.0

  • 提供以下混合精度计算内核:

    • FP16 输入/输出,FP32 Tensor Core 累加

    • BF16 输入/输出,FP32 Tensor Core 累加

    • INT8 输入/输出,INT32 Tensor Core 计算

兼容性说明:

  • cuSPARSELt 需要 CUDA 11.0 或更高版本