发行说明#
cuSPARSELt v0.7.0#
新特性:
引入 Blackwell 支持 (
SM 10.0
和SM 12.0
)。为
SM 10.0
和SM 12.0
架构的以下数据类型组合添加了新的块缩放内核E4M3
输入/输出,FP32
Tensor Core 计算;矩阵 C 的数据类型可以是FP16
或BF16
E4M3
输入,FP16
输出,FP32
Tensor Core 计算E4M3
输入,BF16
输出,FP32
Tensor Core 计算E4M3
输入,FP32
输出,FP32
Tensor Core 计算E2M1
输入/输出,FP32
Tensor Core 计算;矩阵 C 的数据类型可以是FP16
或BF16
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.04、RHEL 7 和 CentOs 7 的支持。
cuSPARSELt 数据类型
cusparseLtHandle_t
、cusparseLtMatDescriptor_t
、cusparseLtMatmulDescAttribute_t
、cusparseLtMatmulAlgSelection_t
和cusparseLtMatmulPlan_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
)已被移除。
兼容性说明:
矩阵大小的约束(
cusparseLtStructuredDescriptorInit
和cusparseLtDenseDescriptorInit
)已放宽。矩阵C
和D
的每个维度(行和列)的最大元素数量限制为 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 的数据类型可以是FP16
或BF16
E4M3
输入,FP16
输出,FP32
Tensor Core 计算E4M3
输入,BF16
输出,FP32
Tensor Core 计算E4M3
输入,FP32
输出,FP32
Tensor Core 计算E5M2
输入/输出,FP32
Tensor Core 计算;矩阵 C 的数据类型可以是FP16
或BF16
E5M2
输入,FP16
输出,FP32
Tensor Core 计算E5M2
输入,BF16
输出,FP32
Tensor Core 计算E5M2
输入,FP32
输出,FP32
Tensor 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
Tensor Core 累加符号在静态库中被混淆。
兼容性说明:
添加了对 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
Tensor Core 累加
兼容性说明:
cuSPARSELt 需要 CUDA 12.0 或更高版本,以及兼容的驱动程序(参见 CUDA 驱动程序发行说明)。
cusparseLtMatmulAlgSelectionInit()
不保证算法 IDalg
的顺序与 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-64
和Linux 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_64
和SM 8.0
提供以下混合精度计算内核
FP16
输入/输出,FP32
Tensor Core 累加BF16
输入/输出,FP32
Tensor Core 累加INT8
输入/输出,INT32
Tensor Core 计算
兼容性说明:
cuSPARSELt 需要 CUDA 11.0 或更高版本