This project is a simple implementation of Sparse Matrix-Vector Multiplication (SPMV) with various sparse matrix formats on different devices (e.g., GPU and ARM). The project is implemented in C++ and CUDA.
GPU naive kernel:
- DIA
- ELL
- CSR(scalar)
- CSR(vector)
- COO(segment)
- CSR-Stream
- CSR5
ARM naive kernel:
- DIA
- ELL
- CSR(scalar)
- CSR(vector)
- COO(segment)
- CSR-Stream
- CSR5
- CUDA Toolkit
- C++ compiler (e.g., g++)
- GNU make
- CMake
To build the project, you can use the following commands:
mkdir build && cd build
cmake ..
make -j8 && make install
To run the program, use the following command:
# If you want to run the program on the NVIDIA GPU.
./bin/cuda_test_all <M> <K>
<M>
: The dimension M of the matrix.<K>
: The dimension K of the matrix.
This project is licensed under the MIT License.