vibeSpatial¶
vibeSpatial
GPU-accelerated spatial analytics for Python. Drop-in GeoDataFrame with CUDA kernels for predicates, overlay, dissolve, buffer, and I/O.
GPU-First Design
Every operation is designed for GPU dispatch first. NVRTC kernels for predicates, overlay, dissolve, buffer, and clip. CPU fallback is explicit and observable.
GeoPandas Compatible
GeoDataFrame and GeoSeries with the same API you know. Import vibespatial, use the same methods. Upstream compatibility and strict-native dispatch are checked continuously.
Device-Resident Geometry
OwnedGeometryArray keeps geometry on the GPU. No Shapely round-trips for GPU consumers. Lazy materialization when host access is needed.
Precision Control
Dual-precision dispatch (fp32/fp64) via PrecisionPlan. Every kernel respects ADR-0002. Consumer GPUs get fp32 fast paths; datacenter GPUs get full fp64.
Adaptive Runtime
Automatic GPU/CPU dispatch based on input size, device capability, and kernel support. Observable dispatch events for profiling and debugging.
Native I/O
GeoParquet and GeoArrow are GPU-native. GeoJSON, Shapefile, FlatGeobuf, GeoJSONSeq, and OSM PBF use observable native/hybrid GPU routes where format semantics allow.
Quick Example¶
import vibespatial
from shapely.geometry import Point, box
# Build a GeoDataFrame
gdf = vibespatial.GeoDataFrame(
{"name": ["a", "b", "c"]},
geometry=[Point(0, 0), Point(1, 1), Point(2, 2)],
)
# GPU-accelerated operations
buffered = gdf.geometry.buffer(0.5)
result = vibespatial.sjoin(gdf, other_gdf, predicate="intersects")
dissolved = gdf.dissolve(by="name")