這個專案示範如何用 CSR (Compressed Sparse Row) 格式儲存稀疏矩陣,並進行 SpMV(Sparse Matrix × Vector)運算:y = A * x。
csr_spmv_demo.c:建立一個 10×10 的三對角稀疏矩陣:- 主對角 = 2、上/下對角 = -1
- 測試向量
x = [1, 2, ..., 10]^T - 使用 CSR 三陣列
row_ptr / col / val表示 A,並計算y = A * x
- 輸出:
y的每個分量- CSR 內部三個陣列,便於驗證
row_ptr:長度為nrows + 1。第i列非零在[row_ptr[i], row_ptr[i+1])。col:與val等長,記錄每個非零的 欄索引。val:記錄每個非零的 值。
不變式:
row_ptr[0] = 0、row_ptr[nrows] = nnz。
# 進到原始碼資料夾
cd C:\c_codes\C
# 編譯
C:\msys64\mingw64\bin\gcc.exe csr_spmv_demo.c -O2 -Wall -Wextra -o csr_spmv_demo.exe
# 執行
.\csr_spmv_demo.exe- 可以改矩陣結構(對角帶寬更寬,或隨機稀疏)
- 可以從檔案讀取矩陣(Matrix Market 格式)
- 可以測試多向量 SpMM