GPU SpMV
基于 CUDA 的高性能稀疏矩阵向量乘法库
智能 Kernel 调度 · 70%+ 带宽利用率 · 生产级可靠
70%+ Bandwidth
CUDA 11.0+
MIT License
C++17
example.cpp
#include <spmv/spmv.h>
int main() {
// 创建稀疏矩阵
CSRMatrix* csr = csr_create(10000, 10000, 500000);
csr_from_dense(csr, data, 10000, 10000);
csr_to_gpu(csr);
// 智能 Kernel 选择并执行
SpMVConfig config = spmv_auto_config(csr);
SpMVResult result = spmv_csr(csr, d_x, d_y, &config, n);
// 70%+ 带宽利用率
printf("Bandwidth: %.1f%%\n",
result.bandwidth_utilization * 100);
}核心特性
性能表现
| 矩阵规模 | 非零元素 | Kernel | 带宽利用率 |
|---|---|---|---|
| 10K × 10K | 500K | Vector CSR | 70.2% |
| 100K × 100K | 5M | Merge Path | 71.5% |
| 1M × 1M | 50M | Merge Path | 70.8% |
测试环境:NVIDIA RTX 3090 (Ampere, 936 GB/s)
查看详细基准测试和优化指南
查看性能详情 →快速开始
架构设计
1
2
3
4
5
6
7
8
9
10
11
12
13
┌─────────────────────────────────────────────────────────┐
│ 应用层 │
│ PageRank │ 迭代求解器 │ 图神经网络 │ 科学计算 │
├─────────────────────────────────────────────────────────┤
│ API 层 │
│ spmv_csr │ spmv_ell │ benchmark │ pagerank │
├─────────────────────────────────────────────────────────┤
│ Kernel 层 │
│ Scalar CSR │ Vector CSR │ Merge Path │ ELL Kernel │
├─────────────────────────────────────────────────────────┤
│ 存储层 │
│ CSR Matrix │ ELL Matrix │
└─────────────────────────────────────────────────────────┘
应用场景
🕸️ 图算法
PageRank、最短路径、社区发现
🔬 科学计算
有限元分析、计算流体力学
🤖 机器学习
稀疏神经网络、推荐系统
📊 数据分析
矩阵分解、特征值计算
GPU SpMV © 2024-2026 LessUp | MIT License