Skip to content

Latest commit

 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SIGMOD Programming Contest 2018: Code Generation

This repository contains a prototype for the SIGMOD Programming Contest 2018. It is a showcase for code generation in databases and for COAT, an EDSL for C++ which makes code generation easier.

More details are explained in a blog post.

Build Instructions

Fetch the JIT engines LLVM and Asmjit, and build them (use more or less cores by changing -j, LLVM can take a while...):

$ ./buildDependencies.sh -j8

Then, build the prototype with cmake:

$ mkdir build
$ cd build
$ cmake ..
$ make -j8

Run Instructions

Download and unpack the test workload from the contest:

$ cd workloads
$ ./download.sh

Afterwards, run the test workload:

$ cd public
$ ../../build/sig18 -t public.{init,work}

This runs the naive baseline with a tuple-at-a-time execution engine without code generation.

For Asmjit, run:

$ ../../build/sig18 -a public.{init,work}

For LLVM, run:

$ ../../build/sig18 -l3 public.{init,work}

You can pick an optimization level from 0 to 3.

The expected results of each query are in public.res. Use diff to compare the output for correctness.

Here are some measurements from my workstation.

Back End Compilation Latency Execution Time
AsmJit 5 ms 550 ms
LLVM -O0 341 ms 768 ms
LLVM -O1 650 ms 513 ms
LLVM -O2 663 ms 521 ms
LLVM -O3 660 ms 567 ms

About

SIGMOD programming contest 2018 solved with code generation

Topics

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages