Skip to main content

cuProj: GPU-Accelerated Coordinate Projection

Project description

 cuProj: GPU-Accelerated Coordinate Projection

Note

cuProj depends on RMM from RAPIDS.

Resources

Overview

cuProj is a library and Python package for accelerated geographic and geodetic coordinate transformations. cuProj can transform billions of geospatial coordinates per second from one coordinate reference system (CRS) to another on GPUs. This includes cartographic projections as well as geodetic transformations. cuProj is implemented in CUDA C++ to run on GPUs to provide the highest performance.

cuProj provides a Python API that closely matches the PyProj API, as well as a header-only C++ API. While the C++ API does not match the API of Proj, it is designed to eventually expand to support many of the same features and transformations that Proj supports.

Currently cuProj only supports a subset of the Proj transformations. The following transformations are supported:

  • WGS84 (EPSG: 4326) to/from any of the 60 UTM zone transformations (EPSG: 32601-32660, 32701-32760).

Example

The Python API is closely matched to PyProj and data can seamlessly transition between the two:

import cuproj
import pyproj

# Create a PyProj transformer
pyproj_transformer = pyproj.Transformer.from_crs("EPSG:4326", "EPSG:32613")

# Create a cuProj transformer
cuproj_transformer = cuproj.Transformer.from_crs("EPSG:4326", "EPSG:32613")

# Transform a grid of points around the San Francisco Bay using PyProj
num_points = 10000
grid_side = int(np.sqrt(num_points))

x, y = np.meshgrid(np.linspace(min_corner[0], max_corner[0], grid_side),
                   np.linspace(min_corner[1], max_corner[1], grid_side))
grid = [x.reshape(-1), y.reshape(-1)]

pyproj_result = pyproj_transformer.transform(*grid)

# Transform a grid of points around the San Francisco Bay using cuProj
cuproj_result = cuproj_transformer.transform(*grid)

Note that the cuProj transformer is created from the same CRSs as the PyProj transformer. The transformer can then be used to transform a grid of points. The result of the transformation is returned as a tuple of x and y coordinates. The result of the PyProj transformation is a tuple of Numpy arrays, while the result of the cuProj transformation is a tuple of CuPy arrays.

Also note that in the above example, the input data are in host memory, so cuProj will create a copy in device memory first. Data already on the device will not be copied, resulting in higher performance. See the simple cuProj Benchmark notebook for an example.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cuproj_cu11-24.6.0.tar.gz (2.2 kB view details)

Uploaded Source

File details

Details for the file cuproj_cu11-24.6.0.tar.gz.

File metadata

  • Download URL: cuproj_cu11-24.6.0.tar.gz
  • Upload date:
  • Size: 2.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for cuproj_cu11-24.6.0.tar.gz
Algorithm Hash digest
SHA256 534181838f671857c44a3d74b4a7f94e55820533e158f6d61c978cab6e6f7fa9
MD5 5a75c0f5a57a5d3d33f2ade2a50aec62
BLAKE2b-256 2fe6401fa197b85171705b2f5c980a0a0ab72dc154ffc2a51735c763856a0a7d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page