Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,15 @@ CompactNamespaces: true
BinPackArguments: false
BinPackParameters: false

# CUDA-specific additions
AttributeMacros:
- "__global__"
- "__device__"
- "__host__"
- "__constant__"
- "__shared__"
- "__managed__"
- "__restrict__"
- "__launch_bounds__"
- "__forceinline__"
- "__noinline__"
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.github/workflows/* @azimafroozeh
114 changes: 114 additions & 0 deletions .github/workflows/galp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# .github/workflows/galp.yml

name: GALP

run-name: >-
${{ github.workflow }} on ${{ github.ref_name }} (#${{ github.run_number }})
— ${{ github.event.pull_request.title || github.event.head_commit.message }}

on:
push:

permissions:
contents: read

jobs:
president-build-test:
if: ${{ github.actor == 'azimafroozeh' }}
name: CMake CI on president
runs-on:
- self-hosted
- Linux
- X64
- president

steps:
# ────────────────────────────────────────────────
# 0. Checkout
# ────────────────────────────────────────────────
- name: Checkout source
uses: actions/checkout@v3
with:
fetch-depth: 0

# ────────────────────────────────────────────────
# 0a. Generate synthetic dataset
# ────────────────────────────────────────────────
- name: Generate synthetic dataset
uses: ./.github/actions/generate-dataset

# ────────────────────────────────────────────────
# 1. Quick sanity of the runner
# ────────────────────────────────────────────────
- name: 🔎 Env dump
run: |
set -x
hostname
echo "Runner label: president"
echo "CUDA path: $CUDA_LIBRARY_PATH"
echo "NVCOMP_INC: $NVCOMP_INC"
echo "NVCOMP_LIB: $NVCOMP_LIB"
which nvidia-smi || true
which nvcc || true
which clang++ || true
which g++ || true
which cmake || true
which make || true

# ────────────────────────────────────────────────
# 2. Verify required tools
# ────────────────────────────────────────────────
- name: ✅ Verify tools
run: |
for cmd in nvidia-smi nvcc clang++ g++ cmake make; do
command -v "$cmd" >/dev/null || { echo "::error::$cmd missing"; exit 127; }
done

- name: Version outputs
run: |
nvidia-smi
nvcc --version
clang++ --version
g++ --version
cmake --version
make --version

# ────────────────────────────────────────────────
# 3. Configure with CMake
# ────────────────────────────────────────────────
- name: 🔄 CMake configure
run: |
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DFLS_ENABLE_GALP_TESTING_AND_BENCHMARKING=ON

# ────────────────────────────────────────────────
# 4. Build (all targets)
# ────────────────────────────────────────────────
- name: 🏗️ Build
run: cmake --build build --parallel

# ────────────────────────────────────────────────
# 5. Run unit tests
# ────────────────────────────────────────────────
- name: 🧪 Run tests
run: |
cd build
ctest --output-on-failure

# ────────────────────────────────────────────────
# 6. Run benchmarks (no label filter)
# ────────────────────────────────────────────────
- name: ⚡ Run benchmarks
run: |
cd build
ctest --output-on-failure || true

# ────────────────────────────────────────────────
# 7. Smoke‑test helper binaries
# ────────────────────────────────────────────────
- name: 🚀 Smoke‑test binaries
run: |
./build/galp/benchmark/micro-benchmarks --help || true
./build/galp/benchmark/compressors-benchmarks --help || true
shell: bash
36 changes: 23 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ endif ()
option(FLS_BUILD_TESTING "Build Test" OFF)
option(FLS_BUILD_BENCHMARKING "Enable Benchmark Build" OFF)
option(FLS_BUILD_EXAMPLES "Build Examples" OFF)
option(FLS_BUILD_GPU "Build GPU" OFF)
option(FLS_BUILD_CUDA "Build FastLanes CUDA reader" OFF)
option(FLS_BUILD_GTEST "Build GTEST" OFF)
option(FLS_BUILD_PYTHON "Build FastLanes Python bindings" OFF)
option(FLS_BUILD_SHARED_LIBS "Build FastLanes library as shared" OFF)
Expand All @@ -120,13 +120,13 @@ option(FLS_ENABLE_TABLE_LOG "Enable Table Log" OFF)
option(FLS_ENABLE_VERBOSE_OUTPUT "Enable verbose output" OFF)
option(FLS_ENABLE_DATA "Enable Data" OFF)
option(FLS_ENABLE_FSST_TESTING_AND_BENCHMARKING "Build FSST" OFF)
option(FLS_ENABLE_GALP_TESTING_AND_BENCHMARKING "Build GALP" OFF)

# Definitions: ---------------------------------------------------------------------------------------------------------
add_compile_definitions(FLS_CMAKE_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")


# GTEST : --------------------------------------------------------------------------------------------------------------
if (FLS_BUILD_TESTING OR FLS_BUILD_GPU OR FLS_ENABLE_FSST_TESTING_AND_BENCHMARKING)
if (FLS_BUILD_TESTING OR FLS_BUILD_CUDA OR FLS_ENABLE_FSST_TESTING_AND_BENCHMARKING OR FLS_ENABLE_GALP_TESTING_AND_BENCHMARKING)
message("---------------------------------------------------------------------------------------------------------")
message("-- FLS: Building GTEST:")
include(GoogleTest)
Expand Down Expand Up @@ -182,8 +182,21 @@ if (true)

endif ()

# CUDA : ---------------------------------------------------------------------------------------------------------------
if (FLS_BUILD_CUDA)
message("---------------------------------------------------------------------------------------------------------")
message("--: Building CU-FastLanes Lib.")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cuda)
endif ()


# DATA : ---------------------------------------------------------------------------------------------------------------
if (FLS_BUILD_TESTING OR FLS_BUILD_BENCHMARKING OR FLS_BUILD_EXAMPLES OR FLS_ENABLE_DATA)
if (FLS_BUILD_TESTING OR
FLS_BUILD_BENCHMARKING OR
FLS_BUILD_EXAMPLES OR
FLS_ENABLE_DATA OR
FLS_ENABLE_GALP_TESTING_AND_BENCHMARKING OR
FLS_ENABLE_FSST_TESTING_AND_BENCHMARKING)
message("---------------------------------------------------------------------------------------------------------")
message("-- FLS: Enabling Data.")

Expand Down Expand Up @@ -276,21 +289,13 @@ if (FLS_ENABLE_FSST_TESTING_AND_BENCHMARKING)
add_subdirectory(fsst)
endif ()


# Example : ------------------------------------------------------------------------------------------------------------
if (FLS_BUILD_EXAMPLES)
message("---------------------------------------------------------------------------------------------------------")
message("- Examples:")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/examples)
endif ()

# GPU : ----------------------------------------------------------------------------------------------------------------
if (FLS_BUILD_GPU)
message("---------------------------------------------------------------------------------------------------------")
message("- GPU:")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/gpu)
endif ()

# Playground : ---------------------------------------------------------------------------------------------------------
if (EXISTS "${CMAKE_SOURCE_DIR}/playground/CMakeLists.txt")
message("---------------------------------------------------------------------------------------------------------")
Expand All @@ -305,4 +310,9 @@ if (FLS_BUILD_PYTHON)
add_subdirectory(python) # your module’s CMakeLists.txt
endif ()


# FSST: ----------------------------------------------------------------------------------------------------------------
if (FLS_ENABLE_GALP_TESTING_AND_BENCHMARKING)
message("---------------------------------------------------------------------------------------------------------")
message("-- FLS: Adding GALP Testing and Benchmarking.")
add_subdirectory(galp)
endif ()
26 changes: 22 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@

FastLanes features:

- **Fully SIMD-friendly with zero explicit SIMD instructions**:
- **Zero dependencies**:
- no external libraries required
* **Fully SIMD-friendly with zero explicit SIMD instructions**
* **Zero dependencies**:

* no external libraries required

---

Expand Down Expand Up @@ -97,7 +98,7 @@ fn main() -> Result<()> {

## Documentation

- [Typing System](docs/typing_system.md)
* [Typing System](docs/typing_system.md)

---

Expand All @@ -121,6 +122,12 @@ fn main() -> Result<()> {
* [Read the paper](https://doi.org/10.1145/3626717)
* [Source code](https://github.com/cwida/ALP)

* **Sven Hielke Hepkema, Azim Afroozeh, Charlotte Felius, Peter Boncz & Stefan Manegold**, “G‑ALP: Rethinking Light‑weight Encodings for GPUs,” *DaMoN ’25*, July 2025

* [Read the paper](https://dl.acm.org/doi/pdf/10.1145/3736227.3736242)
* [Source code](https://github.com/cwida/FastLanesGpu-Damon2025)


---

## How to Cite
Expand Down Expand Up @@ -161,6 +168,17 @@ If you use FastLanes in your research or projects, please cite:
organization = {ACM},
doi = {10.1145/3626717}
}

@inproceedings{hepke2025galp,
author = {Hepkema, Sven Hielke and Afroozeh, Azim and Felius, Charlotte and Boncz, Peter and Manegold, Stefan},
title = {G‑ALP: Rethinking Light‑weight Encodings for GPUs},
booktitle = {DaMoN ’25: Proceedings of the 21st International Workshop on Data Management on New Hardware},
pages = {11:1--11:10},
month = jul,
year = {2025},
organization = {ACM},
url = {https://dl.acm.org/doi/pdf/10.1145/3736227.3736242}
}
```

---
Expand Down
2 changes: 2 additions & 0 deletions benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,5 @@ target_link_libraries(bench_share_schema PUBLIC FastLanes::benchmarker)

add_executable(bench_compression_time bench_compression_time.cpp)
target_link_libraries(bench_compression_time PUBLIC FastLanes::benchmarker)

add_subdirectory(bench_galp)
2 changes: 2 additions & 0 deletions benchmark/bench_galp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
add_executable(bench_galp bench_data_parallelize_patch.cpp)
target_link_libraries(bench_galp PUBLIC FastLanes::benchmarker)
Loading
Loading