Oasis is a data processing SmartNIC for data processing systems working on Parquet files. It offloads Parquet decoding into the network data path of the compute node. The main components are: a top-level hardware design that embeds ParCore (hardware Parquet decoder) into an RDMA-enabled Coyote vFPGA, a software abstraction featuring a scheduler for easy integration into data processing systems, and a DuckDB extension with a table function (scan operator) as an example integration into a real-world database system.
The hardware component requires the ParCore submodule and its dependencies to be loaded by either cloning this repo with submodules directly:
git clone --recurse-submodules git@github.com:celeris-labs/oasis.gitOr initializing the submodules as a step after cloning:
git submodule update --init extension/duckdb
git submodule update --init extension/extension-ci-tools
git submodule update --init --recursive parcore
git submodule update --init celerisThe functionality of the hardware components can be verified with unit tests that are built on top of the Coyote unit test framework. We also describe how to synthesize the hardware.
To run the unit tests, a Vivado simulation project needs to be set up:
./scripts/setup_simulation.shAfter this script is finished, VSCode shows the unit tests as a test flask on the left side of the UI. Run unit tests by clicking on the corresponding run button. The simulation project needs to be regenerated whenever new files are added (also true for the dependencies).
For synthesis, execute the following command (only tested for the build servers in the
HACC, i.e., hacc-build-**):
./scripts/synthesize.sh [--no-rdma] [--decoders <number-of-decoders>] [--v80]The script spins off the synthesis in the background in a new tmux session so the user can
disconnect from the server without the synthesis stopping. You can check the progress in
hardware/build-**/bitgen.log. It is expected that the synthesis takes multiple hours to finish
sometimes not printing anything new to the log for a while. The finished bitstream will be available
in hardware/build-**/bitstreams/cyt_top.bit.
To program an FPGA, book one of the hacc-u55c-**, hacc-gpu-v80-** or alveo-gpu-u55c-01 servers
respectively and clone the Coyote repo. Inside the Coyote repo, go to the driver folder and execute
make -j. Then, execute this command in the Coyote repo root:
./util/program_hacc_local.sh <bitstream> driver/build/coyote_driver.koTo run Oasis on an AMD V80 FPGA (hacc-gpu-v80-**), there are some extra steps due to PCIe 5:
- Program FPGA
- Warm reboot
- Insert driver
The easiest way to share bitstreams across servers is to copy them to /scratch/<nethz-user>/...
which is available as a network mounted file system across servers.
The software consists of the Oasis software library and a DuckDB extension.
The Oasis software library has dependencies on the Coyote, libSTF, and ParCore software libraries
which need to be installed first. In case they are not installed already, libSTF also has a
dependency on jemalloc that can be installed with ./parcore/libstf/scripts/install_jemalloc.sh.
The Oasis software library can be built as follows:
mkdir software/build
cmake -S software -B software/build
cmake --build software/build -jOn the HACC cluster, your home directory is a network mounted file system available across all
server. So, if you want to install the library to e.g., $HOME/opt, you need to append
-DCMAKE_INSTALL_PREFIX=$HOME/opt to the first cmake command and execute
cmake --install software/build after the build.
The DuckDB Oasis extension can be built as follows and requires the Oasis software library to be installed first:
cd extension
make -jMore details can be found in extension/README.md.
If you use Oasis, please cite:
@article{journals/corr/abs-2608-02268,
author = {Jonas Dann and
Luca Tagliavini and
Gustavo Alonso},
title = {Oasis: Hiding the Cost of Querying Parquet Files in the Datapath},
journal = {CoRR},
volume = {abs/2608.02268},
year = {2026},
doi = {10.48550/ARXIV.2608.02268}
}
The Oasis code is licensed under the terms in LICENSE.md, which corresponds to the MIT Licence. Any contributions to Oasis will be accepted under the terms of the same license.