Ozone is library that adds safe, non-blocking channels to the [Choral](https://www.choral-lang.org/) programming language.
In the project root directory, run `scripts/benchmarks.sh`. The script will compile the Ozone library, run benchmarks, and plot figures. Data is written to `data/` and figures are written to `figures/`.
The project requires maven, JDK 17, python 3, pandas, and matplotlib.
- Make sure you have the Choral libraries installed (
org.choral-lang:choralandorg.choral-lang:runtime). To do this, clone the Choral repository and build and install the libraries:mvn install - Make sure you have the
choralcompiler script on yourPATHand that you’ve setCHORAL_PATH.The script is a wrapper that looks for the Choral standalone JAR under
CHORAL_HOMEand invokes it. The version of the JAR should match the version of the runtime you’ve installed.When building Choral from source, You can find the JAR under Choral’s
dist/target, which you can use as yourCHORAL_PATH. - To build this project, run the following command in the root directory:
mvn compile
- `/src/main/java/choral/channels/`: The `AsyncChannel` interface, used by Choral choreographies.
- `/src/main/java/choral/runtime/`: An implementation of `AsyncChannel`, used by driver code written in Java.
- `/src/main/java/choral/examples/ozone/`: Driver code for the Choral/Ozone choreographies used in the paper.
- `/src/main/choral/choral/examples/ozone/`: Choral/Ozone choreographies used in the paper.
- `concurrentproducers/`: Microbenchmark code used to generate Figure 19 (a).
- `concurrentsend/`: Microbenchmark code used to generate Figure 19 (b).
- `modelserving/`: Model serving code used to generate Figure 20.