vibeProj
Fast coordinate transforms on NVIDIA GPUs, with a NumPy fallback for CPU-only environments. vibeProj supports 24 projection families, datum shifts, and preallocated device buffers through a small pyproj-style API.
- Fused CuPy CUDA kernels keep coordinates on the GPU.
- Helmert 7/15-parameter and SVD-compressed datum corrections are built in.
- Hardware-aware transcendental strategies preserve native fallbacks.
- GeoPandas, Rasterio, Shapely, and vibeSpatial workflows are supported.
Performance
One million fp64 coordinates on an RTX 4090 and i9-13900K, measured with pyproj 3.7.2 in August 2026. GPU measurements use preallocated device inputs and outputs; results are the median of three runs with ten timed calls per run.
| Projection | vibeProj GPU | vibeProj NumPy | pyproj |
|---|---|---|---|
| Transverse Mercator / UTM | 0.47 ms (186x faster) | 123.9 ms (1.43x slower) | 86.7 ms |
| Lambert Conformal Conic | 0.48 ms (150x faster) | 48.1 ms (1.50x faster) | 72.1 ms |
| Albers Equal Area | 0.28 ms (173x faster) | 34.5 ms (1.39x faster) | 48.0 ms |
| Web Mercator | 0.19 ms (295x faster) | 17.1 ms (3.22x faster) | 54.9 ms |
| Equal Earth | 0.45 ms (148x faster) | 56.4 ms (1.18x faster) | 66.4 ms |
| Plate Carrée | 0.07 ms (391x faster) | 9.2 ms (2.86x faster) | 26.2 ms |
| Oblique Mercator | 0.77 ms (129x faster) | 79.3 ms (1.25x faster) | 99.5 ms |
| Krovak | 1.95 ms (206x faster) | 360.4 ms (1.11x faster) | 401.3 ms |
Parenthetical comparisons use pyproj as the baseline.
Run the same suite with:
uv run python benchmarks/bench_projections.py run --n 1000000
Install
pip install vibeproj # NumPy
pip install vibeproj[cu12] # CUDA 12
pip install vibeproj[cu13] # CUDA 13
Quick start
from vibeproj import Transformer
transformer = Transformer.from_crs("EPSG:4326", "EPSG:32631")
easting, northing = transformer.transform(2.0, 49.0)
Inputs may be scalars, lists, NumPy arrays, or CuPy arrays. Geographic
coordinates default to longitude/latitude order; pass always_xy=False for
native CRS axis order.
For caller-owned GPU buffers:
transformer.transform_buffers(
x_gpu,
y_gpu,
out_x=easting_gpu,
out_y=northing_gpu,
)
Defaults choose a safe compute precision and transcendental implementation.
Advanced callers can select precision= and transcendentals= explicitly,
then inspect the decision with transformer.explain_strategy().
Documentation
- Quickstart and API
- Supported projections
- Precision and transcendental strategies
- Integration recipes for GeoPandas, Rasterio, Shapely, and vibeSpatial
Development
uv sync
uv run pytest
CUDA development environments can use uv sync --extra cu12 or
uv sync --extra cu13.
Metadata
Release files for vibeproj 1.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vibeproj-1.0.6.tar.gz | 501.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vibeproj-1.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 701.5 kB
Release files / vibeproj-1.0.6.tar.gz
| Download URL | vibeproj-1.0.6.tar.gz |
|---|---|
| Size | 501.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5270cd3b18f4f209f303f3bf2ccf6e686d206161521a6017678b4943ded6f1d9
|
|
BLAKE2b-256 checksum How to use checksums |
c665af2a9720f6a5a31791b67fe21a44631a872ada82195e301127b4fd5a3551
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.
Transparency logRelease files / vibeproj-1.0.6-py3-none-any.whl
| Download URL | vibeproj-1.0.6-py3-none-any.whl |
|---|---|
| Size | 200.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
72cdcd4fc1524cffdb8b490ece2c41634c72658f152748614edadc717604033a
|
|
BLAKE2b-256 checksum How to use checksums |
c600455c9de3c503f1560405b4a6319a11f8ad1e07f4e8bce18c72bab60afda9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.
Transparency log