SkillAgentSearch skills...

Sigmod18contest

SIGMOD programming contest 2018 solved with code generation

Install / Use

/learn @tetzank/Sigmod18contest
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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 |

View on GitHub
GitHub Stars10
CategoryData
Updated1y ago
Forks2

Languages

C++

Security Score

80/100

Audited on Oct 15, 2024

No findings