Skip to content

Latest commit

 

History

History
48 lines (42 loc) · 1.58 KB

File metadata and controls

48 lines (42 loc) · 1.58 KB

Window Function Optimization: Co-Evaluation and Other Techniques

This repository contains an adapted version of DuckDB with predicate Co-Evaluation for window functions. There are adaptations in multiple places:

Reproducibility

  • Build

    git submodule update --init --recursive
    COMMON_CMAKE_VARS="-DCMAKE_C_COMPILER=<your_c_compiler> -DCMAKE_CXX_COMPILER=<your_cxx_compiler>" \
        DISABLE_SANITIZER=1 DISABLE_VPTR_SANITIZER=1 GEN=ninja make release
    cd evaluation
    mkdir -p build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=<your_c_compiler> \
        -DCMAKE_CXX_COMPILER=<your_cxx_compiler> -GNinja
    cmake --build .
    cd ../..
  • Data generation

    ./evaluation/scripts/generate_data.sh
  • Run the microbenchmarks

    ./evaluation/scripts/run_experiments.sh

    The result data is located in evaluation/experiments. If you run on a multi-socket machine, you need to execute within a Docker container to restrict to a NUMA region:

      docker --run -v "$(pwd)":"$(pwd)" --cpuset-cpus <region CPUs> --cpuset-mems <region ID> -it ubuntu:24.04
  • Plot

    ./evaluation/scripts/create_plots.sh

    The plots are located in evaluation/figures.

  • Dependencies

    cmake ninja-build golang python3 texlive texlive-fonts-extra