发行说明#

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 变更:

  • 引入了以下 API 变更来设置块缩放内核的缩放因子
    • 添加了新的枚举器类型 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#

已解决的问题

  • 如果使用 cusparseLtSpMMACompressSize2()cusparseLtSpMMACompress(),稀疏 GEMM 可能会在 Arm64 上产生不正确的结果。

兼容性说明:

  • 添加对 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 Tensor Core 累加

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

兼容性说明:

  • 添加了对 RHEL 7CentOs 7 的支持。

  • cusparseLtMatmulSearch() 中,Split-k 在更广泛的问题维度范围内启用。

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


cuSPARSELt v0.5.0#

新特性:

  • 为以下数据类型组合添加了一个新内核:INT8 输入、INT32 输出、INT32 Tensor Core 累加

兼容性说明:

  • 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 输入/输出、INT32 Tensor Core 计算内核的 GeLU

  • 添加了对批量稀疏 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 或更高版本