版本发布说明#
cuSPARSELt v0.7.0#
新功能:
引入对Blackwell的支持(
SM 10.0和SM 12.0)。为
SM 10.0和SM 12.0架构新增了以下数据类型组合的块缩放内核:E4M3输入/输出,FP32Tensor Core计算;矩阵C的数据类型可以是FP16或BF16E4M3输入,FP16输出,FP32Tensor Core 计算E4M3输入,BF16输出,FP32Tensor Core 计算E4M3输入,FP32输出,FP32Tensor Core 计算E2M1输入/输出,FP32Tensor Core计算;矩阵C的数据类型可以是FP16或BF16E2M1输入,FP16输出,FP32Tensor Core 计算E2M1输入,BF16输出,FP32Tensor Core 计算E2M1输入,FP32输出,FP32Tensor 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_HEURISTICCUSPARSELT_DATAPRALLELCUSPARSELT_SPLITKCUSPARSELT_STREAMK
已解决的问题
修复了多GPU配置导致的崩溃或卡死问题。
兼容性说明:
cuSPARSELt 需要 CUDA 12.8 或更高版本,以及兼容的驱动程序(参见 CUDA 驱动程序发行说明)。
已不再支持 Ubuntu 18.04、RHEL 7 和 CentOs 7。
cuSPARSELt 数据类型的大小,包括
cusparseLtHandle_t、cusparseLtMatDescriptor_t、cusparseLtMatmulDescAttribute_t、cusparseLtMatmulAlgSelection_t和cusparseLtMatmulPlan_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输入/输出,FP32Tensor Core 累加BF16输入/输出,FP32Tensor Core 累加INT8输入,FP16输出,INT32Tensor Core 计算INT8输入,BF16输出,INT32Tensor Core 计算INT8输入,INT32输出,INT32Tensor Core 计算
API变更:
新增了一个枚举值
cusparseLtMatmulDescAttribute_t::CUSPARSELT_MATMUL_SPARSE_MAT_POINTER,用于设置指向剪枝稀疏矩阵的指针。
cuSPARSELt v0.6.1#
依赖项:
移除了对CUDA驱动库的静态链接(Linux上是
libcuda.so,Windows上是cuda.lib)。
兼容性说明:
对矩阵大小的限制(
cusparseLtStructuredDescriptorInit和cusparseLtDenseDescriptorInit)已放宽。矩阵C和D每个维度(行和列)的最大元素数量限制为2097120。
已解决的问题
cusparseLtSpMMACompressedSize()和cusparseLtSpMMACompressedSize2()所需内存稍少。稀疏矩阵乘法(GEMM)在
SM 8.0架构上可能产生错误结果。
cuSPARSELt v0.6.0#
新功能:
新增对Hopper架构的支持 (
SM 9.0)。为
SM 9.0架构新增了以下数据类型组合的内核:FP16输入/输出,FP16Tensor Core计算E4M3输入/输出,FP32Tensor Core计算;矩阵C的数据类型可以是FP16或BF16E4M3输入,FP16输出,FP32Tensor Core 计算E4M3输入,BF16输出,FP32Tensor Core 计算E4M3输入,FP32输出,FP32Tensor Core 计算E5M2输入/输出,FP32Tensor Core计算;矩阵C的数据类型可以是FP16或BF16E5M2输入,FP16输出,FP32Tensor Core 计算E5M2输入,BF16输出,FP32Tensor Core 计算E5M2输入,FP32输出,FP32Tensor Core 计算
驱动程序要求:
cuSPARSELt 需要 CUDA 驱动程序版本
r535 TRD7、r550 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 7和CentOs 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()无法保证算法IDalg的排序与v0.4.0版本一致。
cuSPARSELt v0.4.0#
新功能:
引入
SM 8.9兼容性cuSPARSELt描述符的初始化时间已显著提升
cusparseLtMatmulSearch()的效率已得到提升移除了所有内部内存分配
新增了一个内核,支持以下数据类型组合:
INT8输入,INT32Tensor 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-64和Linux Arm64平台引入
SM 8.6兼容性新增的内核:
FP32输入/输出,TF32Tensor Core 计算TF32输入/输出,TF32Tensor 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_64和SM 8.0提供以下混合精度计算内核:
FP16输入/输出,FP32Tensor Core 累加BF16输入/输出,FP32Tensor Core 累加INT8输入/输出,INT32Tensor Core 计算
兼容性说明:
cuSPARSELt 需要 CUDA 11.0 或更高版本