This repository contains scripts for setting up environments and reproducing results presented in the ASPLOS 2025 paper entitled SmoothE: Differentiable E-Graph Extraction.
Set up the necessar Python environment using conda:
conda env create -f env.yaml
We used CUDA 11.7 for our experiments.
Install CPLEX. You can follow the instructions at CPLEX Education Intallation Tutorial.
A machine equipped with an A100 GPU is highly recommended for this experiment.
bash run_smoothe.sh
python run_greedy_script.py
We provide the resulting log files for this experiment in ./logs/.
If AE skips this experiment, the provided log files will be automatically used to generate the tables and figures.
AE can also choose to skip the CPLEX expriment by skipping the third command.
Note that the LIP performance is not deterministic, and the results may vary slightly from the provided log files due to the status of the machine.
Alternatively, if the AE wants to re-run the experiment, they can use the following command, and the resulting log files will overwrite the provided log files.
python launch.py --acyclic --dataset all --repeat 1 --method cplex
python launch.py --acyclic --dataset all --repeat 1 --method cbc
python launch.py --acyclic --dataset all --repeat 1 --method scip
This experiments takes extremely long time to run because the time out is set to 10 hours for CPLEX to solve the ILP problem.
We provide the resulting log files for this experiment in ./logs/.
If AE skips this experiment, the provided log files will be automatically used to generate the tables and figures.
Alternatively, if the AE wants to re-run the experiment, they can use the following command, and the resulting log files will overwrite the provided log files.
python launch.py --acyclic --dataset all --repeat 1 --method oracle
Run genetic algorithm on all the datasets for three times to report mean and standard deviation. The whole experiment will take around 4 hours.
python run_genetic.py
python table.py
This command will create Table 2, Table 3, and Table 4 in ./table.md.
python figure.py
This command will create Figure 4.pdf and Figure 6.pdf in ./fig.