Operating System: Ubuntu18.04, Ubuntu20.04
For Ubuntu22.04 you will likely have to build OpenCilk v1.0
from source.
sudo apt install libssl-dev libz3-dev
Terrace uses the OpenCilk compiler v1.0. To install OpenCilk:
wget https://github.com/OpenCilk/opencilk-project/releases/download/opencilk%2Fv1.0/OpenCilk-1.0-LLVM-10.0.1-Ubuntu-20.04-x86_64.sh
sudo mkdir /opt/opencilk
sudo sh OpenCilk-1.0-LLVM-10.0.1-Ubuntu-20.04-x86_64.sh --prefix=/opt/opencilk --exclude-subdir
echo "export PATH=/opt/opencilk/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
wget https://github.com/OpenCilk/opencilk-project/releases/download/opencilk%2Fv1.0/OpenCilk-1.0-LLVM-10.0.1-Ubuntu-18.04-x86_64.sh
sudo mkdir /opt/opencilk
sudo sh OpenCilk-1.0-LLVM-10.0.1-Ubuntu-18.04-x86_64.sh --prefix=/opt/opencilk --exclude-subdir
echo "export PATH=/opt/opencilk/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
You are done setting up Terrace, return to GraphZeppelin Instructions. Supplementary information is below.
The command line arguments to the ingestion_test
executable are as follows:
- Path to the (binary) stream file
- Update batch size. Unlike our system, Terrace is not designed to process updates at the granularity of a single edge. Instead, Terrace only accepts updates in batches of a single type (i.e. either all edge insertions or all edge deletions). This parameter controls how large this batch should be. We used a batch size of 1,000,000 for the results we reported in the paper.
- Buffer size. This parameter controls how many edges we should retrieve from external memory at once. We used a buffer size of 1,000,000 for the results we reported in the paper.
- Path to file to write timing data.
If you'd like to take a closer look at the actual source code of the
speed and memory consumtion test, you may find it in
code/src/ingestion_test.cpp
.
The command line arguments to the continuous_query_test
executable are as follows:
- Path to the (binary) stream file
- Update batch size. Unlike our system, Terrace is not designed to process updates at the granularity of a single edge. Instead, Terrace only accepts updates in batches of a single type (i.e. either all edge insertions or all edge deletions). This parameter controls how large this batch should be. We used a batch size of 1,000,000 for the results we reported in the paper.
- Buffer size. This parameter controls how many edges we should retrieve from external memory at once. We used a buffer size of 1,000,000 for the results we reported in the paper.
- Path to file where we record the results of continuous query testing.
- Number of CC queries. If this parameter is X, then we perform X connected components queries every 1/X of the way through the stream.
If you'd like to take a closer look at the actual source code of the
continuous query test, you may find it in
code/src/continuous_query_test.cpp
.