You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A code-generating GPU database system that executes all 22 TPC-H benchmark queries using CUDA. Queries are compiled at runtime using either NVRTC (fast) or NVCC, with kernel code generated through a composable operator framework.
CODEGENeral is extendable and allows benchmarking on custom defined schemas and queries.
Shared memory reductions for high-performance aggregations
Requirements
CUDA Toolkit (tested with CUDA 11+)
CMake 3.18+
C++17 compiler
TPC-H data files (.tbl format)
Building
mkdir build &&cd build
cmake ..
make -j8
Running TPC-H Queries
Basic Usage
# Run with TPC-H data directory
./src/tpch_demo /path/to/tpch-dbgen
# Run with random test data (no data directory)
./src/tpch_demo
Options
Option
Description
--nvcc
Use NVCC compiler instead of NVRTC (slower compilation, same kernel performance)
--dp
Use Dynamic Parallelism when generating the code for launching kernels
--coop
Use cooperative groups and fuse generated code into a single kernel
--ms
Compile kernels sequentially
-v, --verbose
Print generated CUDA kernel code
-q <number>
Execute TPC-H only
-o, --output FILE
Write timing results to CSV file
-h, --help
Show help message
Examples
# Run all queries with NVRTC and export timing to CSV
./src/tpch_demo /path/to/tpch-dbgen -o results.csv
# Run with NVCC compiler and verbose output
./src/tpch_demo /path/to/tpch-dbgen --nvcc -v
# Compare NVRTC vs NVCC compilation times
./src/tpch_demo /path/to/tpch-dbgen -o nvrtc_timing.csv
./src/tpch_demo /path/to/tpch-dbgen --nvcc -o nvcc_timing.csv