diff --git a/README.md b/README.md index e81304d0d..17d1dfe39 100644 --- a/README.md +++ b/README.md @@ -677,6 +677,11 @@ Check out the user guide [here](/examples/user_guide/). - `kvikio` — GPUDirect Storage (SSD → GPU) - `fsspec` + `s3fs`/`gcsfs`/`adlfs` — cloud storage +> `libnvcomp` and `kvikio` are not pulled in by the `gpu` extra. They are runtime +> dependencies of the GeoTIFF GPU read path and must be installed separately +> (typically via conda from the `rapidsai`/`nvidia` channels), since `libnvcomp` +> ships as a system library and `kvikio` requires a matching CUDA toolkit. + ![title](img/dependencies.svg) #### Notes on GDAL diff --git a/docs/source/_static/img/dependencies.svg b/docs/source/_static/img/dependencies.svg index 53d3a867c..54f17591e 100644 --- a/docs/source/_static/img/dependencies.svg +++ b/docs/source/_static/img/dependencies.svg @@ -1,248 +1,374 @@ - - - + + G - + + +cluster_required + + + +cluster_optional + + -xarray_spatial - -Xarray-Spatial -(Raster Analysis) - - -datashader - -Datashader -(Rasterization Pipeline) - - -xarray_spatial->datashader - - + +xarray_spatial + +Xarray-Spatial +(Raster Analysis) + + + +numpy + +NumPy +(Ndarray) + + + +xarray_spatial->numpy + + + + + +xarray + +Xarray +(Labeled-Ndarray) + + + +xarray_spatial->xarray + + -numba - -Numba -(JIT Compiler) + +numba + +Numba +(JIT Compiler) -xarray_spatial->numba - - + +xarray_spatial->numba + + + + + +scipy + +SciPy +(Scientific Computing) + + + +xarray_spatial->scipy + + + + + +matplotlib + +Matplotlib +(Plotting) + + + +xarray_spatial->matplotlib + + + + + +zstandard + +Zstandard +(Compression Codec) + + + +xarray_spatial->zstandard + + + + + +cupy + + +CuPy +(GPU-Ndarray) + - -xarray - -Xarray -(Labeled-Ndarray) - -xarray_spatial->xarray - - + + +xarray_spatial->cupy + + - -datashader->numba - - + + +cuspatial + + +cuSpatial +(GPU Geometry) + - -datashader->xarray - - - -dask - - -Dask -(Distributed-Ndarray) + + +xarray_spatial->cuspatial + + + + + +rtxpy + + +rtxpy +(GPU Ray Tracing) - -datashader->dask - - + + +xarray_spatial->rtxpy + + - -pandas - -Pandas -(Tabular Data) + + +kvikio + + +KvikIO +(GPUDirect Storage I/O) + - -datashader->pandas - - - -spatialpandas - -SpatialPandas -(Geometry-Ndarray) - - -datashader->spatialpandas - - - - -holoviews - -HoloViews -(Advanced Visualization) - - -datashader->holoviews - - + + +xarray_spatial->kvikio + + - -numpy - -Numpy -(Ndarray) + + +libnvcomp + + +libnvcomp.so +(GPU Decompression) + - -numba->numpy - - - -xarray->numpy - - - - -rasterio - -Rasterio -(Python Raster I/O) - - -xarray->rasterio - - - - -xarray->dask - - - - -gdal - -GDAL -(C/C++ Raster I/O) - - -rasterio->gdal - - - - -dask->pandas - - - - -pandas->numpy - - + + +xarray_spatial->libnvcomp + + - -spatialpandas->numba - - + + +dask + + +Dask +(Distributed-Ndarray) + - -spatialpandas->pandas - - - -geopandas - -Geopandas -(GeoDataFrame) - - -spatialpandas->geopandas - - - - -rtree - -RTree -(Python Spatial Index) - - -geopandas->rtree - - - - -fiona - -Fiona -(Python Vector I/O) - - -geopandas->fiona - - + + +xarray_spatial->dask + + + + + +dask_geopandas + + +dask-geopandas +(Distributed GeoDataFrame) + + + + + +xarray_spatial->dask_geopandas + + -shapely - -Shapely -(Python Geometry) + +shapely + +Shapely +(Python Geometry) + + + +xarray_spatial->shapely + + + + + +geopandas + +GeoPandas +(GeoDataFrame) + + + +xarray_spatial->geopandas + + + + + +awkward + + +Awkward +(Jagged Arrays) + + + + + +xarray_spatial->awkward + + + + + +spatialpandas + +SpatialPandas +(Geometry-Ndarray) + + + +xarray_spatial->spatialpandas + + + + + +pyproj + + +pyproj +(Reprojection) + + + + + +xarray_spatial->pyproj + + + + + +deflate + +deflate +(GeoTIFF Codec) + + + +xarray_spatial->deflate + + + + + +xarray->numpy + + + + + +numba->numpy + + + + + +scipy->numpy + + + + + +matplotlib->numpy + + + + + +cuspatial->cupy + + + + + +rtxpy->cupy + + + + + +kvikio->cupy + + + + + +libnvcomp->cupy + + + + + +dask_geopandas->dask + + + + + +dask_geopandas->geopandas + + -geopandas->shapely - - - - -libspatialindex - -libspatialindex -(C/C++ Spatial Index) - - -rtree->libspatialindex - - - - -geos - -GEOS -(C/C++ Vector I/O) - - -fiona->geos - - - - -fiona->shapely - - - - -shapely->geos - - + +geopandas->shapely + + + + + +spatialpandas->numba + + diff --git a/img/dependencies.dot b/img/dependencies.dot index a518f7e93..7d908f5dd 100644 --- a/img/dependencies.dot +++ b/img/dependencies.dot @@ -5,59 +5,66 @@ node [fontname = "helvetica"]; edge [fontname = "helvetica"]; -subgraph required { - xarray_spatial -> datashader; - xarray_spatial -> numba; +subgraph cluster_required { + edge [color=darkgreen]; + xarray_spatial -> numpy; xarray_spatial -> xarray; - xarray_spatial -> cupy; + xarray_spatial -> numba; + xarray_spatial -> scipy; + xarray_spatial -> matplotlib; + xarray_spatial -> zstandard; xarray -> numpy; - xarray -> dask; - xarray -> cupy; - dask -> cupy; numba -> numpy; - numba -> cupy; + scipy -> numpy; + matplotlib -> numpy; }; -subgraph required { - xarray -> rasterio -> gdal [style=dashed]; - datashader -> numba; - datashader -> xarray; - datashader -> dask; - datashader -> pandas; - datashader -> spatialpandas; - datashader -> holoviews [style=dashed]; - pandas -> numpy; - dask -> pandas; - spatialpandas -> pandas; - spatialpandas -> numba; - spatialpandas -> geopandas [style=dashed]; - geopandas -> rtree -> libspatialindex [style=dashed]; - geopandas -> fiona -> geos [style=dashed]; - geopandas -> shapely -> geos [style=dashed]; - fiona -> shapely [style=dashed]; +subgraph cluster_optional { + xarray_spatial -> cupy [style=dashed]; + xarray_spatial -> cuspatial [style=dashed]; + xarray_spatial -> rtxpy [style=dashed]; + xarray_spatial -> kvikio [style=dashed]; + xarray_spatial -> libnvcomp [style=dashed]; + xarray_spatial -> dask [style=dashed]; + xarray_spatial -> dask_geopandas [style=dashed]; + xarray_spatial -> shapely [style=dashed]; + xarray_spatial -> geopandas [style=dashed]; + xarray_spatial -> awkward [style=dashed]; + xarray_spatial -> spatialpandas [style=dashed]; + xarray_spatial -> pyproj [style=dashed]; + xarray_spatial -> deflate [style=dashed]; + cuspatial -> cupy [style=dashed]; + rtxpy -> cupy [style=dashed]; + kvikio -> cupy [style=dashed]; + libnvcomp -> cupy [style=dashed]; + dask_geopandas -> dask [style=dashed]; + dask_geopandas -> geopandas [style=dashed]; + geopandas -> shapely [style=dashed]; + spatialpandas -> numba [style=dashed]; }; - - xarray_spatial [label=<Xarray-Spatial
(Raster Analysis)> fillcolor=palegreen2 fontsize=20 width=0.5 shape=circle style=filled]; - xarray [label=<Xarray
(Labeled-Ndarray)> fillcolor=aquamarine style=filled]; - datashader [label=<Datashader
(Rasterization Pipeline)> fillcolor=aquamarine style=filled]; - dask [label=<Dask
(Distributed-Ndarray)> fillcolor=aquamarine style=filled href="https://dask.pydata.org"]; + numpy [label=<NumPy
(Ndarray)> fillcolor=palegreen style=filled]; + xarray [label=<Xarray
(Labeled-Ndarray)> fillcolor=palegreen style=filled]; + numba [label=<Numba
(JIT Compiler)> fillcolor=palegreen style=filled]; + scipy [label=<SciPy
(Scientific Computing)> fillcolor=palegreen style=filled]; + matplotlib [label=<Matplotlib
(Plotting)> fillcolor=palegreen style=filled]; + zstandard [label=<Zstandard
(Compression Codec)> fillcolor=palegreen style=filled]; + cupy [label=<CuPy
(GPU-Ndarray)> fillcolor=lemonchiffon style=filled href="https://github.com/cupy/cupy"]; - numpy [label=<NumPy
(Ndarray)> fillcolor=aquamarine style=filled]; - numba [label=<Numba
(JIT Compiler)> fillcolor=aquamarine style=filled]; - pandas [label=<Pandas
(Tabular Data)> fillcolor=aquamarine style=filled]; - spatialpandas [label=<SpatialPandas
(Geometry-Ndarray)> fillcolor=aquamarine style=filled]; - rasterio [label=<Rasterio
(Python Raster I/O)> fillcolor=lemonchiffon style=filled]; - gdal [label=<GDAL
(C/C++ Raster I/O)> fillcolor=lemonchiffon style=filled]; - geos [label=<GEOS
(C/C++ Vector I/O)> fillcolor=lemonchiffon style=filled]; - fiona [label=<Fiona
(Python Vector I/O)> fillcolor=lemonchiffon style=filled]; - holoviews [label=<HoloViews
(Advanced Visualization)> fillcolor=lemonchiffon style=filled]; + cuspatial [label=<cuSpatial
(GPU Geometry)> fillcolor=lemonchiffon style=filled href="https://github.com/rapidsai/cuspatial"]; + rtxpy [label=<rtxpy
(GPU Ray Tracing)> fillcolor=lemonchiffon style=filled href="https://github.com/makepath/rtxpy"]; + kvikio [label=<KvikIO
(GPUDirect Storage I/O)> fillcolor=lemonchiffon style=filled href="https://github.com/rapidsai/kvikio"]; + libnvcomp [label=<libnvcomp.so
(GPU Decompression)> fillcolor=lemonchiffon style=filled href="https://developer.nvidia.com/nvcomp"]; + dask [label=<Dask
(Distributed-Ndarray)> fillcolor=lemonchiffon style=filled href="https://dask.org"]; + dask_geopandas [label=<dask-geopandas
(Distributed GeoDataFrame)> fillcolor=lemonchiffon style=filled href="https://github.com/geopandas/dask-geopandas"]; shapely [label=<Shapely
(Python Geometry)> fillcolor=lemonchiffon style=filled]; - geopandas [label=<Geopandas
(GeoDataFrame)> fillcolor=lemonchiffon style=filled]; - rtree [label=<RTree
(Python Spatial Index)> fillcolor=lemonchiffon style=filled]; - libspatialindex [label=<libspatialindex
(C/C++ Spatial Index)> fillcolor=lemonchiffon style=filled]; + geopandas [label=<GeoPandas
(GeoDataFrame)> fillcolor=lemonchiffon style=filled]; + awkward [label=<Awkward
(Jagged Arrays)> fillcolor=lemonchiffon style=filled href="https://github.com/scikit-hep/awkward"]; + spatialpandas [label=<SpatialPandas
(Geometry-Ndarray)> fillcolor=lemonchiffon style=filled]; + pyproj [label=<pyproj
(Reprojection)> fillcolor=lemonchiffon style=filled href="https://github.com/pyproj4/pyproj"]; + deflate [label=<deflate
(GeoTIFF Codec)> fillcolor=lemonchiffon style=filled]; } diff --git a/img/dependencies.png b/img/dependencies.png index 999e7e47a..db84f61be 100644 Binary files a/img/dependencies.png and b/img/dependencies.png differ diff --git a/img/dependencies.svg b/img/dependencies.svg index f332c6afd..54f17591e 100644 --- a/img/dependencies.svg +++ b/img/dependencies.svg @@ -1,325 +1,374 @@ - - - + + G - + + +cluster_required + + + +cluster_optional + + xarray_spatial - -Xarray-Spatial -(Raster Analysis) + +Xarray-Spatial +(Raster Analysis) - + -datashader - -Datashader -(Rasterization Pipeline) +numpy + +NumPy +(Ndarray) - + -xarray_spatial->datashader - - +xarray_spatial->numpy + + - + -numba - -Numba -(JIT Compiler) +xarray + +Xarray +(Labeled-Ndarray) - + -xarray_spatial->numba - - +xarray_spatial->xarray + + - + -xarray - -Xarray -(Labeled-Ndarray) +numba + +Numba +(JIT Compiler) - + -xarray_spatial->xarray - - +xarray_spatial->numba + + - + +scipy + +SciPy +(Scientific Computing) + + + +xarray_spatial->scipy + + + + + +matplotlib + +Matplotlib +(Plotting) + + + +xarray_spatial->matplotlib + + + + + +zstandard + +Zstandard +(Compression Codec) + + + +xarray_spatial->zstandard + + + + + cupy - - -CuPy -(GPU-Ndarray) + + +CuPy +(GPU-Ndarray) - + xarray_spatial->cupy - - + + - - -datashader->numba - - - - - -datashader->xarray - - - - - -dask - - -Dask -(Distributed-Ndarray) + + +cuspatial + + +cuSpatial +(GPU Geometry) - - -datashader->dask - - + + +xarray_spatial->cuspatial + + - + -pandas - -Pandas -(Tabular Data) +rtxpy + + +rtxpy +(GPU Ray Tracing) + - - -datashader->pandas - - - + + +xarray_spatial->rtxpy + + + + -spatialpandas - -SpatialPandas -(Geometry-Ndarray) +kvikio + + +KvikIO +(GPUDirect Storage I/O) + - - -datashader->spatialpandas - - - + + +xarray_spatial->kvikio + + + + -holoviews - -HoloViews -(Advanced Visualization) +libnvcomp + + +libnvcomp.so +(GPU Decompression) + - - -datashader->holoviews - - - - -numba->cupy - - + + +xarray_spatial->libnvcomp + + - - -numpy - -NumPy -(Ndarray) + + +dask + + +Dask +(Distributed-Ndarray) + - - -numba->numpy - - - - -xarray->cupy - - + + +xarray_spatial->dask + + - - -xarray->numpy - - + + +dask_geopandas + + +dask-geopandas +(Distributed GeoDataFrame) + - - -xarray->dask - - - - -rasterio - -Rasterio -(Python Raster I/O) + + +xarray_spatial->dask_geopandas + + - - -xarray->rasterio - - + + +shapely + +Shapely +(Python Geometry) - - -dask->cupy - - + + +xarray_spatial->shapely + + - - -dask->pandas - - + + +geopandas + +GeoPandas +(GeoDataFrame) - - -gdal - -GDAL -(C/C++ Raster I/O) + + +xarray_spatial->geopandas + + - - -rasterio->gdal - - + + +awkward + + +Awkward +(Jagged Arrays) + - - -pandas->numpy - - - - -spatialpandas->numba - - + + +xarray_spatial->awkward + + - + + +spatialpandas + +SpatialPandas +(Geometry-Ndarray) + + -spatialpandas->pandas - - +xarray_spatial->spatialpandas + + + + + +pyproj + + +pyproj +(Reprojection) + - - -geopandas - -Geopandas -(GeoDataFrame) - + + +xarray_spatial->pyproj + + + + + +deflate + +deflate +(GeoTIFF Codec) + + -spatialpandas->geopandas - - +xarray_spatial->deflate + + - - -rtree - -RTree -(Python Spatial Index) - - - -geopandas->rtree - - - - - -fiona - -Fiona -(Python Vector I/O) + + +xarray->numpy + + - - -geopandas->fiona - - + + +numba->numpy + + - - -shapely - -Shapely -(Python Geometry) + + +scipy->numpy + + - - -geopandas->shapely - - + + +matplotlib->numpy + + - - -libspatialindex - -libspatialindex -(C/C++ Spatial Index) + + +cuspatial->cupy + + - + -rtree->libspatialindex - - +rtxpy->cupy + + - - -geos - -GEOS -(C/C++ Vector I/O) + + +kvikio->cupy + + - + -fiona->geos - - +libnvcomp->cupy + + - - -fiona->shapely - - + + +dask_geopandas->dask + + - + -shapely->geos - - +dask_geopandas->geopandas + + + + + +geopandas->shapely + + + + + +spatialpandas->numba + +