🇺🇸 English

快速开始

本文档将帮助您在 5 分钟内完成 GPU SpMV 的安装和第一个程序运行。

目录

  1. 系统要求
    1. 检查 CUDA 安装
  2. 安装步骤
    1. 1. 克隆仓库
    2. 2. 构建项目
    3. 3. 运行测试
  3. 第一个程序
    1. 编译运行
  4. 下一步
  5. 常见问题
    1. Q: 构建失败,找不到 CUDA?
    2. Q: 测试失败?

系统要求

组件 最低要求 推荐配置
CUDA Toolkit 11.0 12.0+
CMake 3.18 3.25+
C++ 编译器 GCC 7+ / MSVC 2019+ GCC 11+ / MSVC 2022+
NVIDIA GPU CC 7.0 (Volta) CC 8.6+ (Ampere)
GPU 显存 4 GB 8 GB+

检查 CUDA 安装

1
2
nvcc --version
nvidia-smi

安装步骤

1. 克隆仓库

1
2
git clone https://github.com/LessUp/gpu-spmv.git
cd gpu-spmv

2. 构建项目

使用 CMake Presets(推荐):

1
2
3
# Release 模式构建
cmake --preset release
cmake --build --preset release

或使用传统方式:

1
2
3
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

3. 运行测试

1
2
3
4
5
# 运行所有测试
ctest --preset default

# 或直接运行测试程序
./build-release/spmv_tests

第一个程序

创建 first_spmv.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <spmv/spmv.h>
#include <cstdio>

int main() {
    // 创建 3x3 稀疏矩阵: [1 0 2; 0 3 4; 0 0 5]
    float dense[] = {1, 0, 2, 0, 3, 4, 0, 0, 5};
    
    CSRMatrix* csr = csr_create(3, 3, 5);
    csr_from_dense(csr, dense, 3, 3);
    csr_to_gpu(csr);
    
    // 准备输入向量 x = [1, 1, 1]
    float h_x[] = {1, 1, 1};
    CudaBuffer<float> d_x(3), d_y(3);
    cudaMemcpy(d_x.data(), h_x, 3 * sizeof(float), cudaMemcpyHostToDevice);
    
    // 执行 SpMV: y = A * x
    SpMVConfig config = spmv_auto_config(csr);
    SpMVResult result = spmv_csr(csr, d_x.data(), d_y.data(), &config, 3);
    
    if (result.error == SpMVError::SUCCESS) {
        printf("Success! Time: %.3f ms\n", result.time_ms);
        
        // 读取结果
        float h_y[3];
        cudaMemcpy(h_y, d_y.data(), 3 * sizeof(float), cudaMemcpyDeviceToHost);
        printf("Result: [%.0f, %.0f, %.0f]\n", h_y[0], h_y[1], h_y[2]);
        // 输出: [3, 7, 5]
    }
    
    csr_destroy(csr);
    return 0;
}

编译运行

1
2
3
4
5
6
7
8
# 编译
nvcc -o first_spmv first_spmv.cpp \
    -I./include \
    -L./build-release -lgpu_spmv \
    -lcudart

# 运行
./first_spmv

下一步


常见问题

Q: 构建失败,找不到 CUDA?

确保 CUDA 已正确安装并设置了环境变量:

1
2
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

Q: 测试失败?

检查 GPU 是否可用:

1
nvidia-smi

如果无 GPU,使用 CPU-only 模式测试:

1
cmake --preset minimal

遇到问题?提交 Issue