Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
702f206
Add libgpuspatial module
pwrliang Nov 20, 2025
8412bec
Fix CI
pwrliang Nov 20, 2025
dc18500
Fix tests
pwrliang Nov 20, 2025
2705e68
Fix building of tests
pwrliang Nov 24, 2025
7130ccf
Fix CI
pwrliang Nov 24, 2025
57d9c8b
Fix CI
pwrliang Nov 24, 2025
cf5bf6d
Resolve some issues
pwrliang Dec 5, 2025
8a178f9
Fix build.rs
pwrliang Dec 5, 2025
0137a86
Merge branch 'main' of https://github.com/apache/sedona-db into gpu
pwrliang Dec 5, 2025
c201681
Fix an error
pwrliang Dec 5, 2025
56e6137
Fix building issue
pwrliang Dec 5, 2025
4dac890
Fix building issue
pwrliang Dec 6, 2025
fbfe907
feat(rust/sedona-functions): Implement ST_GeometryN (#317)
Abeeujah Nov 19, 2025
4bc1703
feat(c/sedona-geos): Implement ST_MinimumClearance (#314)
Abeeujah Nov 19, 2025
897beee
feat(rust/sedona-raster-functions): Add affine transformation paramet…
jesspav Nov 19, 2025
51035e2
fix(python/sedonadb): Fix failing test on MacOS wheel builds (#324)
paleolimbot Nov 21, 2025
b774d0a
chore(rust): Change aggregate function names (#325)
jesspav Nov 22, 2025
6cf52cb
chore: Fix cargo publish error by adding workspace dependencies with …
zhangfengcdt Nov 22, 2025
18e9a0b
fix: update set_dev_version.py and fix minimum clearance line unit te…
zhangfengcdt Nov 23, 2025
91bc664
chore: Update wkb crate dependency to v0.9.2 (#329)
zhangfengcdt Nov 23, 2025
4d7a87a
Install dependabot (#332)
dentiny Nov 23, 2025
89ac016
chore(deps): bump actions/upload-artifact from 4 to 5 (#333)
dependabot[bot] Nov 23, 2025
331d888
chore(deps): bump actions/download-artifact from 4 to 6 (#334)
dependabot[bot] Nov 23, 2025
2a6d0cf
chore(deps): bump actions/checkout from 4 to 6 (#335)
dependabot[bot] Nov 23, 2025
a1a48fd
chore(deps): bump actions/setup-python from 4 to 6 (#336)
dependabot[bot] Nov 23, 2025
717748b
chore: add notice (#353)
caicancai Nov 23, 2025
0848f48
chore(ci): ci checks support cargo fmt (#354)
caicancai Nov 24, 2025
8fb307f
chore: update geo-index to use version 0.3.2 (#355)
zhangfengcdt Nov 24, 2025
86d51f0
feat(c/sedona-geos): Implement st_polygonize for scalar inputs (#328)
joonaspessi Nov 24, 2025
7f0b710
feat(python/sedonadb): Implement GDAL/OGR formats via pyogrio (#283)
paleolimbot Nov 24, 2025
df5ce06
feat(examples/sedonadb-rust): Add example Rust project (#320)
paleolimbot Nov 24, 2025
277acc4
chore(python/sedonadb): Add README to PyPI index page (#327)
paleolimbot Nov 24, 2025
14a1bc0
docs: update overture date (#361)
MrPowers Nov 25, 2025
c7d9b3b
chore(deps): bump actions/checkout from v4 to v6 (#365)
yutannihilation Nov 25, 2025
098c9b5
chore(deps): bump rand_distr from 0.4.3 to 0.5.1 (#340)
dependabot[bot] Nov 26, 2025
ff6ee3c
chore(deps): bump rstest from 0.24.0 to 0.26.1 (#341)
dependabot[bot] Nov 26, 2025
7d91c9e
fix(python/sedonadb): Ensure global Parquet options are considered on…
paleolimbot Nov 26, 2025
67985ea
fix(rust/sedona-geoparquet): Ensure reading a Parquet file that doesn…
paleolimbot Nov 26, 2025
86c228c
feat(rust/sedona-functions): Implement ordering framework that includ…
paleolimbot Nov 26, 2025
3bd06f7
fix(python/sedonadb): Fix GDAL/OGR read on Windows (#371)
paleolimbot Nov 26, 2025
9a74c60
docs(rust/sedona-functions): Fix minor typos in function description …
yutannihilation Nov 27, 2025
6a2daba
chore(ci): Add s2geography to default Windows Python wheel build (#372)
paleolimbot Nov 27, 2025
a3243d2
feat(rust/sedona-functions): Implement ST_Reverse using geo-traits (#…
Abeeujah Nov 27, 2025
3ed834a
chore(rust,c): Run cargo clippy --fix (#373)
paleolimbot Nov 27, 2025
5f1c4ed
chore(dev/release): Ensure release verification passes for 0.2.0 (#375)
paleolimbot Nov 27, 2025
f3409c6
chore(docs): Update mkdocs for latest mkdocstrings (#382)
paleolimbot Nov 28, 2025
7238f43
feat(c/sedona-geos): Add ST_NumInteriorRings (#369)
LakshmiSowmya04 Nov 28, 2025
51a37bd
fix(rust/sedona-expr): Resolve filter expression bounding box by name…
paleolimbot Nov 28, 2025
42cb353
docs(r/sedonadb): Minor fix to remove an unintentional cross-ref (#390)
yutannihilation Nov 30, 2025
99ffe74
feat(c/sedona-geos): Implement ST_NumPoints (#386)
LakshmiSowmya04 Nov 30, 2025
7fa582a
fix(rust/sedona-expr): Fix GeoParquet pruning when number of final co…
paleolimbot Dec 1, 2025
3303384
fix(rust/sedona-geoparquet): Don't use ProjectionExec to create GeoPa…
paleolimbot Dec 1, 2025
f75a5b2
docs(examples): Add note about the SRID arg of ST_Point() (#392)
yutannihilation Dec 1, 2025
822fdc0
feat(rust/sedona-functions): Implement ST_InteriorRingN (#381)
Abeeujah Dec 1, 2025
ada31ee
chore(r/sedonadb): Update savvy to v0.9 (#401)
yutannihilation Dec 2, 2025
9a553eb
chore(dependabot): Add groups for datafusion, wasm-bindgen, and savvy…
yutannihilation Dec 2, 2025
1068d49
feat(c/sedona-geos): Implement ST_NRings (#387)
LakshmiSowmya04 Dec 2, 2025
38c6df8
chore(ci): pre-commit add 6 more hooks and clean up (#378)
jbampton Dec 2, 2025
b59da6b
feat(rust/sedona-raster-functions): Add RS_RasterToWorldCoord (#383)
jesspav Dec 2, 2025
0991832
docs: Update SQL docs for changes in v0.2 (#368)
MrPowers Dec 2, 2025
8c3d5be
feat(rust/sedona-raster-functions): Add RS_RasterToWorldCoord as Poin…
jesspav Dec 4, 2025
24f1b00
Fix an error
pwrliang Dec 5, 2025
48c8d7b
Merge branch 'main' of https://github.com/apache/sedona-db into gpu
pwrliang Dec 6, 2025
2d14e41
Merge branch 'gpu' of github.com:pwrliang/sedona-db into gpu
pwrliang Dec 6, 2025
cb38525
Fix format issue
pwrliang Dec 6, 2025
0e39cb7
Merge branch 'main' into gpu
paleolimbot Dec 8, 2025
68f0d04
Rewrite intersection matrix
pwrliang Dec 9, 2025
20a257b
Update Cargo.lock and fix license issues
pwrliang Dec 9, 2025
7420fc1
Update LICENSE
paleolimbot Dec 9, 2025
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
224 changes: 224 additions & 0 deletions .github/workflows/rust-gpu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# This workflow compiles CUDA code on GitHub-hosted runners (ubuntu-latest).
# CUDA compilation (nvcc) works WITHOUT GPU hardware - only needs CUDA toolkit.
# GPU runtime execution requires actual GPU, so tests are commented out.
#
name: rust-gpu

on:
pull_request:
branches:
- main
paths:
- 'c/sedona-libgpuspatial/**'
- 'rust/sedona-spatial-join-gpu/**'
- '.github/workflows/rust-gpu.yml'

push:
branches:
- main
paths:
- 'c/sedona-libgpuspatial/**'
- 'rust/sedona-spatial-join-gpu/**'
- '.github/workflows/rust-gpu.yml'

concurrency:
group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}-rust-gpu
cancel-in-progress: true

permissions:
contents: read

defaults:
run:
shell: bash -l -eo pipefail {0}

# Set workflow timeout to 90 minutes for CUDA compilation
# Expected: ~45-60 minutes first time, ~10-15 minutes cached
env:
WORKFLOW_TIMEOUT_MINUTES: 90
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa

jobs:
rust-gpu-build:
# Using GitHub-hosted runner to compile CUDA code
# CUDA compilation works without GPU hardware (only needs CUDA toolkit)
# GPU tests are skipped (no GPU hardware for runtime execution)
# TODO: Once GPU runner is ready, enable GPU tests with:
# runs-on: [self-hosted, gpu, linux, cuda]
strategy:
fail-fast: false
matrix:
name: [ "clippy", "docs", "test", "build" ]

name: "${{ matrix.name }}"
runs-on: ubuntu-latest
timeout-minutes: 60
env:
CARGO_INCREMENTAL: 0
# Disable debug info completely to save disk space
CARGO_PROFILE_DEV_DEBUG: 0
CARGO_PROFILE_TEST_DEBUG: 0
# Limit parallel compilation to reduce memory pressure (GPU compilation is intensive)
CARGO_BUILD_JOBS: 4


steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'

- name: Clone vcpkg
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
ref: ${{ env.VCPKG_REF }}
path: vcpkg

# Set up environment variables for vcpkg and CUDA
- name: Set up environment variables and bootstrap vcpkg
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
CUDA_HOME: /usr/local/cuda
run: |
cd vcpkg
./bootstrap-vcpkg.sh
cd ..

echo "VCPKG_ROOT=$VCPKG_ROOT" >> $GITHUB_ENV
echo "PATH=$VCPKG_ROOT:$PATH" >> $GITHUB_ENV
echo "CMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE" >> $GITHUB_ENV
echo "/usr/local/cuda/bin" >> $GITHUB_PATH

- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# Free up space by removing tools we don't need
tool-cache: false # Keep tool cache as we need build tools
android: true # Remove Android SDK (not needed)
dotnet: true # Remove .NET runtime (not needed)
haskell: true # Remove Haskell toolchain (not needed)
large-packages: false # Keep essential packages including build-essential
swap-storage: true # Remove swap file to free space
docker-images: true # Remove docker images (not needed)

# Install system dependencies including CUDA toolkit for compilation
- name: Install system dependencies
run: |
sudo apt-get update

# Install transport tools for Kitware CMake (needed for newer CMake)
sudo apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget

# Add Kitware repository for CMake
wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add -
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main'
sudo apt-get update

# Install build tools
sudo apt-get install -y build-essential pkg-config cmake flex bison

# Install libclang for bindgen (Rust FFI binding generator)
sudo apt-get install -y libclang-dev

# Verify compiler and CMake versions
gcc --version
g++ --version
cmake --version

# Install GEOS for spatial operations
sudo apt-get install -y libgeos-dev

# Install CUDA toolkit for compilation (nvcc)
# Note: CUDA compilation works without GPU hardware
# GPU runtime tests still require actual GPU
if ! command -v nvcc &> /dev/null; then
echo "Installing CUDA 12 toolkit for compilation..."

# Add NVIDIA CUDA repository
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update

# Remove any existing CUDA toolkit
sudo apt purge cuda-toolkit* -y || true

# Install CUDA 12 and driver (libcuda.so comes with driver)
sudo apt-get install -y cuda-toolkit-12 nvidia-driver-580-server

# Set CUDA path
echo "/usr/local/cuda/bin" >> $GITHUB_PATH

nvcc --version
else
echo "CUDA toolkit already installed: $(nvcc --version)"
fi

# Cache vcpkg installed packages (expensive to rebuild)
- name: Cache vcpkg binaries
id: cache-vcpkg
uses: actions/cache@v4
with:
path: vcpkg/packages
# Bump the number at the end of this line to force a new dependency build
key: vcpkg-installed-${{ runner.os }}-${{ runner.arch }}-${{ env.VCPKG_REF }}-2

# Install vcpkg dependencies from vcpkg.json manifest
- name: Install vcpkg dependencies
if: steps.cache-vcpkg.outputs.cache-hit != 'true'
run: |
./vcpkg/vcpkg install abseil openssl
# Clean up vcpkg buildtrees and downloads to save space
rm -rf vcpkg/buildtrees
rm -rf vcpkg/downloads

- name: Use stable Rust
id: rust
run: |
rustup toolchain install stable --no-self-update
rustup default stable

- uses: Swatinem/rust-cache@v2
with:
prefix-key: "rust-gpu-v3"

# Build WITH GPU feature to compile CUDA code
# CUDA compilation (nvcc) works without GPU hardware
# Only GPU runtime execution requires actual GPU
- name: Build libgpuspatial (with CUDA compilation)
run: |
echo "=== Building libgpuspatial WITH GPU feature ==="
echo "Compiling CUDA code using nvcc (no GPU hardware needed for compilation)"
echo "Note: First build with CUDA takes 45-60 minutes (CMake + CUDA compilation)"
echo "Subsequent builds: 10-15 minutes (cached)"
echo ""
echo "Build started at: $(date)"
# Build library only (skip tests - they require CUDA driver which isn't available)
# --lib builds only the library, not test binaries
cargo build --locked --package sedona-libgpuspatial --lib --features gpu --verbose

- name: Build libgpuspatial Tests
run: |
echo "=== Building libgpuspatial tests ==="
cd c/sedona-libgpuspatial/libgpuspatial
mkdir build
cmake --preset=default-with-tests -S . -B build
cmake --build build --target all
3 changes: 2 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ repos:
- id: codespell
# types_or: [markdown, c, c++, rust, python]
additional_dependencies: [tomli]
exclude: "^c/(sedona-geoarrow-c/src/geoarrow|sedona-geoarrow-c/src/nanoarrow|sedona-tg/src/tg)/.*|^docs/image/sedonadb-architecture\\.svg$"
exclude: "^c/(sedona-geoarrow-c/src/geoarrow|sedona-geoarrow-c/src/nanoarrow|sedona-libgpuspatial/libgpuspatial|sedona-tg/src/tg)/.*|^docs/image/sedonadb-architecture\\.svg$"
args: ["--ignore-words-list=thirdparty"]

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.6
Expand Down
Loading