vibeProj¶
vibeProj
GPU-accelerated coordinate projection. 20 projections, each with a fused NVRTC kernel that runs the full transform pipeline in a single launch.
Fused Kernels
One kernel launch per transform. Axis swap, deg/rad, projection math, scale/offset — all fused into a single NVRTC kernel. No intermediate buffers.
20 Projections
Transverse Mercator, Lambert, Albers, Stereographic, and 16 more. Forward and inverse. Each projection has a handwritten CUDA kernel.
Zero-Copy Integration
Reads CuPy device buffers, writes to pre-allocated output. No host↔device round-trips. Designed for vibeSpatial's buffer protocol.
CRS Resolution
Pass an EPSG code, get a transformer. Uses pyproj under the hood to extract parameters, then dispatches to the right fused kernel.
Precision Control
fp64 by default. Experimental double-single (ds) mode pairs two fp32 values for fp64-equivalent accuracy at fp32 throughput on consumer GPUs.
CPU Fallback
NumPy-backed element-wise path for every projection. Same API, same results. Tests validate GPU output against the CPU reference.
Quick Example¶
from vibeproj import Transformer
t = Transformer.from_crs("EPSG:4326", "EPSG:32631")
x, y = t.transform(49.0, 2.0) # scalar
x, y = t.transform(lat_array, lon_array) # NumPy or CuPy arrays