You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Separated reproject-only from full-pipeline timing. With warm
Numba/CUDA kernels:
- CuPy reproject: 73ms (2.0x faster than rioxarray)
- rioxarray reproject: 144ms
- NumPy reproject: 413ms
Full pipeline (read+reproject+write) is dominated by I/O for
compressed GeoTIFFs, where rioxarray's C-level rasterio beats
our Python/Numba reader.
Added note about ~4.5s JIT warmup on first call.
The GPU path (CuPy or Dask+CuPy) is the fastest option for large rasters, running slightly faster than GDAL. The NumPy path is slower due to Python/Numba overhead in the resampling loop. The Dask CPU path has significant scheduler overhead for this single-file workload.
24
+
All times measured with warm Numba/CUDA kernels (first call incurs ~4.5s JIT compilation).
25
+
26
+
| Backend | End-to-end | Reproject only | vs rioxarray (reproject) |
The CuPy reproject is 2x faster than rioxarray for the coordinate transform + resampling. The end-to-end gap is due to I/O: rioxarray uses rasterio's C-level compressed read/write, while our geotiff reader is pure Python/Numba. For reproject-only workloads (data already in memory), CuPy is the clear winner.
34
+
35
+
**Note on JIT warmup**: The first `reproject()` call compiles the Numba kernels (~4.5s). All subsequent calls run at full speed. For long-running applications or batch processing, this is amortized over many calls.
0 commit comments