CMake (3.13+)
gcc/clang/icc (c++17 support)
x86 CPU with avx512 extension.
Use command lscpu
to check if your cpu supports avx512 or not.
git submodule update --init --recursive
mkdir -p third_party/asmjit/build/ && cd third_party/asmjit/build/
cmake -G Ninja ..
cmake --build .
cmake --install . --prefix .
cd -
mkdir -p ./build && cd build
cmake -G Ninja ..
cmake --build .
Run JitSpMM on the toy example:
./spmm -i ../data/1138_bus/1138_bus.csrbin
To run JitSpMM on other dataset, please download the mtx file from SuiteSparse Matrix Collection. And convert it to our own binary format using mm_to_csrbin
:
./mm_to_csrbin -i [input .mtx file] -o [output .csrbin file]
Run ./spmm -h
to see more options.
If you use JitSpMM in your project, please cite the following paper.
@inproceedings{fu2024jitspmm,
title={JITSPMM: Just-in-Time Instruction Generation for Accelerated Sparse Matrix-Matrix Multiplication},
author={Fu, Qiang and Rolinger, Thomas B and Huang, H Howie},
booktitle={2024 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)},
pages={448--459},
year={2024},
organization={IEEE}
}