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);
}

核心特性

🚀

极致性能

  • 4 种优化 Kernel 智能调度
  • 高达 70%+ 理论带宽利用
  • Merge Path 完美负载均衡
  • ELL 格式完全合并访存
📊

多格式支持

  • CSR - 通用稀疏矩阵
  • ELL - 高性能均匀矩阵
  • 格式间自动转换
  • GPU/CPU 无缝切换
🎯

生产级质量

  • RAII 资源管理(CudaBuffer)
  • 语义化错误码(SpMVError)
  • 跨平台支持(Linux/Windows)
  • 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)

查看详细基准测试和优化指南

查看性能详情 →

快速开始

安装

git clone https://github.com/LessUp/gpu-spmv.git
cd gpu-spmv
cmake --preset release && cmake --build --preset release

架构设计

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、最短路径、社区发现
🔬 科学计算 有限元分析、计算流体力学
🤖 机器学习 稀疏神经网络、推荐系统
📊 数据分析 矩阵分解、特征值计算


🇺🇸 View in English

GPU SpMV © 2024-2026 LessUp | MIT License