Note
- cuSpatial User's Guide: Python API reference and guides
- cuSpatial Developer Documentation: Understand cuSpatial's architecture
- Getting Started: Instructions for installing cuSpatial
- cuSpatial Community: Get help, collaborate, and ask the team questions
- cuSpatial Issues: Request a feature/documentation or report a bug
- cuSpatial Roadmap: Report issues or request features.
cuSpatial accelerates vector geospatial operations through GPU parallelization. As part of the RAPIDS libraries, cuSpatial is inherently connected to cuDF, cuML, and cuGraph, enabling GPU acceleration across entire workflows.
cuSpatial represents data in GeoArrow format, which enables compatibility with the Apache Arrow ecosystem.
cuSpatial's Python API is closely matched to GeoPandas and data can seamlessly transition between the two:
import geopandas
from shapely.geometry import Polygon
import cuspatial
p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
geoseries = geopandas.GeoSeries([p1, p2])
cuspatial_geoseries = cuspatial.from_geopandas(geoseries)
print(cuspatial_geoseries)
Output:
0 POLYGON ((0 0, 1 0, 1 1, 0 0))
1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
For additional examples, browse the complete API documentation, or check out more detailed notebooks. the NYC Taxi and Weather notebooks make use of cuSpatial.
cuSpatial is constantly working on new features! Check out the epics for a high-level view of our development, or the roadmap for the details!
- Spatial relationship queries (DE-9IM) Follow Development!
- Distance computations (ST_Distance) Follow Development!
- Haversine distance
- Hausdorff distance
- Spatial window filtering
- Quadtree indexing
- Spatial joins
- Quadtree-based point-in-polygon
- Quadtree-based point-to-nearest-linestring
- Deriving trajectories from point location data
- Computing distance/speed of trajectories
- Computing spatial bounding boxes of trajectories
Thanks to the from_geopandas
and to_geopandas
functions you can accelerate what cuSpatial supports, and leave the rest of the workflow in place.
---
title: Integrating into Existing Workflows
---
%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false},
'themeVariables': {'commitLabelColor': '#000000',
'commitLabelBackground': '#ffffff',
'commitLabelFontSize': '14px'}} }%%
gitGraph
commit id: "Existing Workflow Start"
commit id: "GeoPandas IO"
commit id: "Geospatial Analytics"
branch a
checkout a
commit id: "from_geopandas"
commit id: "cuSpatial GPU Acceleration"
branch b
checkout b
commit id: "cuDF"
commit id: "cuML"
commit id: "cuGraph"
checkout a
merge b
commit id: "to_geopandas"
checkout main
merge a
commit id: "Continue Work"
CUDA/GPU requirements
CUDA 11.2+
NVIDIA driver 450.80.02+
Pascal architecture or better (Compute Capability >=6.0)
Use the RAPIDS Release Selector, selecting Docker
as the installation method. All RAPIDS Docker images contain cuSpatial.
An example command from the Release Selector:
docker pull nvcr.io/nvidia/rapidsai/rapidsai-core:23.02-cuda11.8-runtime-ubuntu22.04-py3.10
docker run --gpus all --rm -it \
--shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 \
-p 8888:8888 -p 8787:8787 -p 8786:8786 \
nvcr.io/nvidia/rapidsai/rapidsai-core:23.02-cuda11.8-runtime-ubuntu22.04-py3.10
To install via conda:
Note cuSpatial is supported only on Linux or through WSL, and with Python versions 3.9 and later
cuSpatial can be installed with conda (miniconda, or the full Anaconda distribution) from the rapidsai channel:
conda install -c rapidsai -c conda-forge -c nvidia \
cuspatial=23.04 python=3.10 cudatoolkit=11.8
We also provide nightly Conda packages built from the HEAD of our latest development branch.
See the RAPIDS release selector for more OS and version info.
To build and install cuSpatial from source please see the build documentation.