For the experiments in this repository, we used the Xilinx Zynq UltraScale+ MPSoC platform and Vivado 2017.4. Ready-to-deploy bitstreams are available in the bitstreams
directory. You are encouraged to use the latest version, but feel free to experiment with earlier versions as well.
- Run
make
in thesrc
directory. - Copy the generated executable
rel_mem_bench
to the board.
The program initially sets a default configuration for the experiment. These default values are hard-coded and provide baseline settings for the database and experiment. You can override the default configuration with command-line options, or by adding a config file. For example you can copy this config file to the same directory as rel_mem_bench
and customize the database and experiment parameters.
You can run ./rel_mem_bench -h
to see the command line options
-L
: Load database configuration from the 'config' file.-C
: Specify the number of columns.-R
: Set the number of rows.-N
: Define the number of experiment samples.-O
: Specify column offsets (comma-separated).-K
: Set the K value for the query.-S
: Choose storage type (r: row store, c: column store).-T
: Define column types (s: sorted, r: random, z: zero-padded).-P
: Enable printing of the created database and query results.-m
: Set the minimum value.-M
: Set the maximum value.
-
Run the single query with
-q
option followed by the query name such asq2
and additional options. For example the following query would load the database configuration from theconfig
file../rel_mem_bench -q q2 -L -O 0,4 -K 136
This command would run query
Q2: SELECT A0 FROM S WHERE A1 > 136;
-
Run the varying row size experiment with the
-r
option followed by the query name and additional options as needed. For example the following command would run a varying row size experiment with the hard-coded database and experiment settings but it would override the default number of experiment by-N 1
option../rel_mem_bench -r q2 -N 1
-
For projectivity experiment, use
-p
option../rel_mem_bench -p
After running the experiments the output will show you the path to the saved query results or the performance measures. For example this performance results file has the basic information about the experiment settings such as the number of rows, row size, column widths, and performance measures such a CPU cycles count, information about cache refills and number of instructions retired.
You can use the python scripts that we provide in plotting
directory to generate the plots for projectivity and varying row-size experiments. You can take a look at the plotting/plots
directory for sample plots.