ASPLOS 2025 RASSM Artifact
Clone this repository using git clone https://github.com/gt-tinker/RASSM.git
- C++ compiler such as gcc-13 or Intel Classic Compiler ICC (preffered) -- https://www.intel.com/content/www/us/en/developer/articles/news/intel-c-compiler-classic-2021-2-1-release.html
- cmake (version 3.10+)
- boost (1.65 - 1.74) -- https://www.boost.org/users/history/version_1_68_0.html
A script to download the dataset has been provided, /scripts/download_large_40M.sh. The dataset requires around 45GB of space when uncompressed. The script will download all the matrices in our test suite and extract them in the format expected by the runscripts. The following steps can be used:
export RASSM_DATASET=<desired download location>export RASSM_HOME=<path to cloned repository>bash $RASSM_HOME/scripts/download_large_40M.sh
To build this repository, you will require a vectorizing C++ compiler that supports c++-17. We strongly suggest using the Intel Classic Compiler available from https://www.intel.com/content/www/us/en/developer/articles/news/intel-c-compiler-classic-2021-2-1-release.html for best reproducibility.
export RASSM_HOME=<path to cloned repository>orexport RASSM_HOME=$PWDif at the base level of the cloned repositorycd $RASSM_HOMEmkdir buildexport RASSM_BUILD=$RASSM_HOME/buildcd buildcmake ../codemake
If everything goes smoothly, the rassm executable should be produced.
- If you are using the suggested ICC compiler and building boost from source, you will need to run,
export BOOST_ROOT=<path to boost installation base>,export CC=icc, andexport CXX=icpc.
Once you have built the executable rassm, use the provided $RASSM_HOME/scripts/run_basic_test.sh script using bash $RASSM_HOME/scripts/run_basic_test.sh. This should run the rassm program for all the baselines and rassm itself for the SpMM kernel and make sure all the baselines are functional.
To reproduce Figure 6 from the associated paper, the following sequence of commands should be used, assuming you are in $RASSM_HOME:
-
bash scripts/run-all.sh-- This will require several hours to finish and we recommend not using the system during this time. One way to use this command and exit the shell instance is vianohup. The command will then benohup bash scripts/run-all.sh > run-all.log & -
bash scripts/extract_stats.sh -
Open the Jupyter notebook and hit the run button. Make sure the
working_dirvariable in the second block points to the output directory where theextract_stats.shscript generated the csv files.
You should now be able to see the plots from Figure 6 of the paper. Recall that the exact numbers will vary on several factors such as the machine used, background processes, etc. However, the general trends should be similar.
Please don't hesitate to reach out to us if you have any issues using this code.