This library is the DPC++ porting (and extension) of the Crystal library, originally written in CUDA.
It Implements a collection of block-wide device functions that can be used to implement high performance implementations of SQL queries on CPUs and GPUs.
Above you can find a few details on how to run this code on Intel CPUs and GPUs using Intel DevCloud platform, assuming you cloned the repository already
>> cd oneapi_crystal
>> qsub -I -d .
Now you have an interactive shell on a CPU node.
>> cd oneapi_crystal
>> qsub -I -l nodes=2:gpu:ppn=2 -d .
Now you have an interactive shell on a (integrated) GPU node.
>> cd oneapi_crystal
>> qsub -I -l nodes=1:iris_xe_max:ppn=2 -d .
Now you have an interactive shell on a (discrete) GPU node.
To run the star schema benchmark implementation:
# Generate the test generator / transformer binaries
cd ssb/dbgen
make
cd ../loader
make
cd ../../
# Generate the test data and transform into columnar layout
# Substitute <SF> with appropriate scale factor (eg: 1)
python util.py ssb <SF> gen
python util.py ssb <SF> transform
configure the benchmark settings
vi queries/ssb_utils.h
# edit BASE_PATH in ssb_utils.h with the location
# of oneapi_crystal
now build the queries
make queries
and run, say q11
./build/q11
Compile the operators running
make operators
then benchmark, say the hash join like this
./build/join <table_size>