Skip to content
Open
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
fb40d34
feat(rust/sedona-spatial-join-gpu): Add GPU-accelerated spatial join …
zhangfengcdt Dec 17, 2025
fc75986
Add missing license files
zhangfengcdt Dec 17, 2025
940ea80
Added spdlog fmt to the vcpkg install command
zhangfengcdt Dec 17, 2025
eaa8acd
default build to build release for consistent
zhangfengcdt Dec 17, 2025
2be7542
simplified the workflow to run a single job instead of 4 identical ones
zhangfengcdt Dec 17, 2025
b08cf9c
add zstd library
zhangfengcdt Dec 17, 2025
a30fff0
Added zstd to c/sedona-libgpuspatial/libgpuspatial/vcpkg.json test de…
zhangfengcdt Dec 17, 2025
9cc3bc8
free disk space for rust build and test pipeline
zhangfengcdt Dec 17, 2025
6a3fac4
modify cargo toml file to be consistent with other projects
zhangfengcdt Dec 18, 2025
15f222b
clean up eprint and print
zhangfengcdt Dec 18, 2025
b20dbde
more cleanups
zhangfengcdt Dec 18, 2025
e5170a9
addre pr comments: spdlogd name and remove unused file
zhangfengcdt Dec 19, 2025
c473b17
fix require comfy-table 7.2+ for set_truncation_indicator method
zhangfengcdt Jan 5, 2026
3847064
feat(rust/sedona-spatial-join-gpu): Add GPU-accelerated spatial join …
zhangfengcdt Dec 17, 2025
7fc7dcc
Added spdlog fmt to the vcpkg install command
zhangfengcdt Dec 17, 2025
d56c142
modify cargo toml file to be consistent with other projects
zhangfengcdt Dec 18, 2025
6ceca73
fix require comfy-table 7.2+ for set_truncation_indicator method
zhangfengcdt Jan 5, 2026
044c7c7
feat(rust/sedona-spatial-join-gpu): Add GPU-accelerated spatial join …
zhangfengcdt Dec 17, 2025
b2f525c
modify cargo toml file to be consistent with other projects
zhangfengcdt Dec 18, 2025
5c18feb
Optimizing GPU-based spatial joins and implementing the filter operation
pwrliang Dec 24, 2025
0679c81
Fix missing dependency
pwrliang Jan 15, 2026
64274d7
feat(rust/sedona-spatial-join-gpu): Add GPU-accelerated spatial join …
zhangfengcdt Dec 17, 2025
0625feb
Cleanup
pwrliang Jan 15, 2026
f08c3f7
Cleanup
pwrliang Jan 15, 2026
6af0d3d
Fix Clippy issues
pwrliang Jan 15, 2026
ce89f0b
Fix issues
pwrliang Jan 15, 2026
c0f2e57
Fix issues
pwrliang Jan 15, 2026
e1acf13
Fix CI
pwrliang Jan 15, 2026
cb75435
Fix some issues
pwrliang Jan 16, 2026
1e2dec3
Fix test
pwrliang Jan 16, 2026
fdba6bf
Do not cast ArrayRef
pwrliang Jan 17, 2026
7f9bccf
Merge GPU join into sedona-spatial-join
pwrliang Jan 17, 2026
2f61699
Concat build side
pwrliang Jan 19, 2026
fee387c
Fix Clippy issues
pwrliang Jan 19, 2026
7334f0d
Fix CI
pwrliang Jan 19, 2026
90250b4
Shared RT global engine
pwrliang Jan 19, 2026
4125bdf
Do not expose SpatialIndex
pwrliang Jan 20, 2026
adbfbb5
Fix tests
pwrliang Jan 21, 2026
b690b12
Refine tests
pwrliang Jan 21, 2026
20f45fb
Remove gpu feature in python/sedona
pwrliang Jan 21, 2026
2577f64
Improve C wrapper
pwrliang Jan 22, 2026
ccbcb7b
Update FFI accordingly
pwrliang Jan 23, 2026
09f6479
Fix a right join bug
pwrliang Jan 23, 2026
b047034
Fix clippy errors
pwrliang Jan 23, 2026
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
32 changes: 14 additions & 18 deletions .github/workflows/rust-gpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,13 @@ on:
- 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:
Expand Down Expand Up @@ -66,7 +64,7 @@ jobs:
strategy:
fail-fast: false
matrix:
name: [ "clippy", "docs", "test", "build" ]
name: [ "build_tests", "build_lib", "build_package" ]

name: "${{ matrix.name }}"
runs-on: ubuntu-latest
Expand Down Expand Up @@ -181,15 +179,6 @@ jobs:
# 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 }}-3

# 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: |
Expand All @@ -200,10 +189,20 @@ jobs:
with:
prefix-key: "rust-gpu-v4"

- name: Build libgpuspatial Tests
if: matrix.name == 'build_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

# 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)
if: matrix.name == 'build_lib'
run: |
echo "=== Building libgpuspatial WITH GPU feature ==="
echo "Compiling CUDA code using nvcc (no GPU hardware needed for compilation)"
Expand All @@ -215,10 +214,7 @@ jobs:
# --lib builds only the library, not test binaries
cargo build --locked --package sedona-libgpuspatial --lib --features gpu --verbose

- name: Build libgpuspatial Tests
- name: Build GPU Spatial Join Package
if: matrix.name == 'build_package'
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
cargo build --workspace --package sedona-spatial-join --features gpu --verbose
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ jobs:
- name: Test
if: matrix.name == 'test'
run: |
cargo test --workspace --all-targets --all-features
cargo test --workspace --all-targets # Test all default features but GPU
# Clean up intermediate build artifacts to free disk space aggressively
cargo clean -p sedona-s2geography
rm -rf target/debug/deps
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,4 @@ __pycache__
dev/release/.env

/.luarc.json
venv/
83 changes: 83 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ sedona-testing = { version = "0.3.0", path = "rust/sedona-testing" }
# C wrapper crates
sedona-geoarrow-c = { version = "0.3.0", path = "c/sedona-geoarrow-c" }
sedona-geos = { version = "0.3.0", path = "c/sedona-geos" }
sedona-libgpuspatial = { version = "0.3.0", path = "c/sedona-libgpuspatial" }
sedona-proj = { version = "0.3.0", path = "c/sedona-proj", default-features = false }
sedona-s2geography = { version = "0.3.0", path = "c/sedona-s2geography" }
sedona-tg = { version = "0.3.0", path = "c/sedona-tg" }
1 change: 1 addition & 0 deletions c/sedona-geoarrow-c/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ fn main() {
.include("src/")
.flag("-DGEOARROW_NAMESPACE=SedonaDB")
.flag("-DNANOARROW_NAMESPACE=SedonaDB")
.flag("-Wno-type-limits")
.compile("geoarrow");

cc::Build::new()
Expand Down
3 changes: 3 additions & 0 deletions c/sedona-libgpuspatial/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,11 @@ which = "8.0"
arrow-array = { workspace = true, features = ["ffi"] }
arrow-schema = { workspace = true }
thiserror = { workspace = true }
geo = { workspace = true }
wkt = { workspace = true }
log = "0.4"
sedona-schema = { path = "../../rust/sedona-schema" }
nvml-wrapper = "0.10.0"

[dev-dependencies]
sedona-expr = { path = "../../rust/sedona-expr" }
Expand Down
18 changes: 18 additions & 0 deletions c/sedona-libgpuspatial/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,13 @@ fn main() {
println!("cargo:warning=CMAKE_CUDA_ARCHITECTURES environment variable not set. Defaulting to '86;89'.");
"86;89".to_string()
});
// Determine the build profile to match Cargo's debug/release mode
let profile_mode = if cfg!(debug_assertions) {
"Debug"
} else {
"Release"
};

let dst = cmake::Config::new("./libgpuspatial")
.define("CMAKE_CUDA_ARCHITECTURES", cuda_architectures)
.define("CMAKE_POLICY_VERSION_MINIMUM", "3.5") // Allow older CMake versions
Expand Down Expand Up @@ -157,6 +164,17 @@ fn main() {
println!("cargo:rustc-link-lib=static=gpuspatial");
println!("cargo:rustc-link-lib=static=rmm");
println!("cargo:rustc-link-lib=static=rapids_logger");
// Use the 'd' suffix for the debug build of spdlog (libspdlogd.a)
let spdlog_lib_name = if cfg!(debug_assertions) {
"spdlogd"
} else {
"spdlog"
};
println!(
"cargo:warning=Linking spdlog in {} mode: lib{}.a",
profile_mode, spdlog_lib_name
);
println!("cargo:rustc-link-lib=static={}", spdlog_lib_name);
println!("cargo:rustc-link-lib=static=geoarrow");
println!("cargo:rustc-link-lib=static=nanoarrow");
println!("cargo:rustc-link-lib=stdc++");
Expand Down
11 changes: 7 additions & 4 deletions c/sedona-libgpuspatial/libgpuspatial/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,12 @@ config_shaders(PTX_FILES)

message("-- Config shader PTX files ${PTX_FILES}")

add_library(gpuspatial src/rt/rt_engine.cpp src/relate_engine.cu src/spatial_joiner.cu
${PTX_FILES})
add_library(gpuspatial
src/rt/rt_engine.cpp
src/relate_engine.cu
src/rt_spatial_index.cu
src/rt_spatial_refiner.cu
${PTX_FILES})

# Link libraries
target_link_libraries(gpuspatial
Expand All @@ -142,8 +146,7 @@ target_link_libraries(gpuspatial
cuda
rmm::rmm
rapids_logger::rapids_logger
OptiX
PRIVATE zstd)
OptiX)

# Set include directories
target_include_directories(gpuspatial
Expand Down
2 changes: 1 addition & 1 deletion c/sedona-libgpuspatial/libgpuspatial/CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"name": "default",
"configurePreset": "default-with-tests",
"environment": {
"GPUSPATIAL_TEST_DIR": "${sourceDir}/test_data"
"GPUSPATIAL_TEST_DIR": "${sourceDir}/test/data"
}
}
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ function(find_and_configure_geoarrow)
"BUILD_SHARED_LIBS OFF"
${_exclude_from_all})
set_target_properties(geoarrow PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_compile_options(geoarrow PRIVATE -Wno-conversion)
rapids_export_find_package_root(BUILD
geoarrow
"${geoarrow_BINARY_DIR}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ function(find_and_configure_nanoarrow)
"NANOARROW_NAMESPACE gpuspatial"
${_exclude_from_all})
set_target_properties(nanoarrow PROPERTIES POSITION_INDEPENDENT_CODE ON)
if(TARGET nanoarrow_ipc) # Tests need this
target_compile_options(nanoarrow_ipc PRIVATE -Wno-conversion)
endif()
target_compile_options(nanoarrow PRIVATE -Wno-conversion)
rapids_export_find_package_root(BUILD
nanoarrow
"${nanoarrow_BINARY_DIR}"
Expand Down
Loading