Skip to content

Commit 0764894

Browse files
committed
artifact readme
1 parent ab7f4b2 commit 0764894

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

ASPLOS25.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# Target-Aware Implementation of Real Expressions
2+
3+
This is the artifact for our paper "Target-Aware Implementation of Real Expressions".
4+
In our paper, we presented Chassis,
5+
a target-aware numerical compiler,
6+
that compiles mathematical expressions to
7+
a particular target, including hardware ISAs,
8+
programming languages, and software libraries.
9+
If you wish to evaluate the artifact,
10+
please start with the "Getting Started" section
11+
of this file.
12+
The evaluation takes a couple of hours to run.
13+
14+
## Getting Started
15+
16+
We recommend an x86-64 machine with at least 32 GB of RAM,
17+
running some Linux distribution.
18+
The machine we used for our evaluation
19+
used an AMD EPYC 7702 CPU, with 512 GB of RAM,
20+
running Ubuntu 20.04 LTS.
21+
You will need to install a number of tools and libraries.
22+
We ran our evaluation using `bash`.
23+
24+
### Racket
25+
26+
Install [Racket](https://download.racket-lang.org/) from the official download page.
27+
We recommend at least Racket 8.12.
28+
The `snap` versions of Racket are strongly discouraged
29+
since they are known to be broken.
30+
31+
### Rust
32+
33+
Install Rust using the [rustup](https://rustup.rs/) installer.
34+
By default, `rustup` installs the newest stable version of Rust.
35+
We used Rust 1.77.2, so it is guaranteed to be newer.
36+
Updating Rust occasionally breaks the Rust dependency for Chassis.
37+
If you experience any problems, you can follow `rustup` documentation
38+
to install a specific version of Rust.
39+
40+
### Python
41+
42+
Python is installed by default on Linux distributions.
43+
We recommend at least Python 3.10.
44+
If you wish to install a specific version of Python,
45+
we recommend using [pyenv](https://github.com/pyenv/pyenv)
46+
as an installer.
47+
We recommend creating a virtual environment
48+
by running the following series of commands.
49+
Create the virtual environment under `.env` with
50+
```
51+
bash> python -m venv .env/
52+
```
53+
Activate the virtual environment using
54+
```
55+
bash> source .env/bin/activate
56+
```
57+
and install `numpy`, `matplotlib`, and `scipy` packages
58+
```
59+
bash> pip install numpy matplotlib scipy
60+
```
61+
62+
### Julia
63+
64+
Install Julia using the [juliaup](https://julialang.org/downloads/) installer.
65+
Like `rustup`, `juliaup` installs the newest stable version of Rust.
66+
We recommend at least Julia 1.10.
67+
68+
### Clang
69+
70+
We used Clang 14 as our C/C++ compiler.
71+
We recommend installing Clang through your package manager.
72+
73+
### libvdt
74+
75+
The vdt library is a vectorized math library developed at CERN.
76+
Building vdt requires CMake which is usually available through your package manager.
77+
To install, clone the [repo](https://github.com/dpiparo/vdt).
78+
Then navigate to the `vdt` directory and run
79+
```
80+
bash> cmake .
81+
bash> make
82+
bash> make install
83+
```
84+
The final step possibly requires root.
85+
86+
## Testing installed software
87+
88+
To ensure that your environment is properly set up.
89+
Run the following commands and ensure they do not print any errors.
90+
91+
Check that Racket is installed.
92+
```
93+
bash> racket -v
94+
```
95+
Check that Rust is installed.
96+
```
97+
bash> cargo --version
98+
```
99+
Check that Clang is installed.
100+
```
101+
bash> clang -v
102+
```
103+
Check that Python is installed with the proper libraries.
104+
```
105+
bash> python3
106+
>>> import numpy, matplotlib, scipy
107+
>>> exit()
108+
```
109+
Check that Julia is installed.
110+
```
111+
bash> julia -v
112+
```
113+
Check that `libvdt` is installed.
114+
On Linux, run the following command.
115+
It should print a single entry with the path of `libvdt.so`.
116+
```
117+
bash> ldconfig -p | grep libvdt
118+
```
119+
120+
Check that Herbie builds properly.
121+
In this directory, run
122+
```
123+
make install
124+
```
125+
To test that Herbie works, run
126+
```
127+
racket src/herbie.rkt shell
128+
```
129+
Assuming every command works above,
130+
your system should be set up to run the evaluation.
131+
132+
## Running the evaluation
133+
134+
To start the evaluation, run
135+
```
136+
bash> bash infra/platforms-eval.sh reports 1
137+
```
138+
This command runs the entire evaluation.
139+
The whole process takes 2-3 hours depending the machine.
140+
We recommend using `tmux` so that the process can be detached.
141+
Since the evaluation measures real time,
142+
we recommend not using any other application while it is running,
143+
and closing any open application before running it.
144+
145+
## Analyzing the results
146+
147+
If the evaluation runs to completion,
148+
the `reports` directory should have the following structure
149+
```
150+
reports
151+
|-- platforms
152+
|-- baseline
153+
|-- cache
154+
|-- drivers
155+
|-- herbie-2.0
156+
|-- output
157+
```
158+
All plots are rendered under `reports/platform/output`.

0 commit comments

Comments
 (0)