Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python bindings for cuProj transformation (e.g. UTM <-> WGS) #1213

Closed
Tracked by #1023
harrism opened this issue Jul 11, 2023 · 0 comments · Fixed by #1217
Closed
Tracked by #1023

Python bindings for cuProj transformation (e.g. UTM <-> WGS) #1213

harrism opened this issue Jul 11, 2023 · 0 comments · Fixed by #1217
Assignees

Comments

@harrism
Copy link
Member

harrism commented Jul 11, 2023

No description provided.

@harrism harrism moved this from Todo to In Progress in cuSpatial Jul 17, 2023
@harrism harrism moved this from In Progress to Review in cuSpatial Jul 30, 2023
@rapids-bot rapids-bot bot closed this as completed in #1217 Aug 2, 2023
rapids-bot bot pushed a commit that referenced this issue Aug 2, 2023
Closes #1213 

This benchmark is run on a DGX H100. See the cuproj_benchmark.ipynb included with this PR. PyProj results use a single Xeon core from this machine, and cuProj results use a single H100 GPU.  cuProj speedup for double precision, data on device (see notebook): 

```
cuProj Speedup for 1,000,000,000 points: 4103.17x
```

![image](https://github.com/rapidsai/cuspatial/assets/783069/6d4e2a02-50fe-43db-a07d-fe71f91d1b89)

Note this PR also includes a number of C++ changes that were necessary to enable Python/Cython bindings, and/or to enable compatibility with PyProj (e.g. refactored EPSG string parsing class).

TODO:
 - [x] Support arrays
 - [x] More comprehensive tests, including a grid of coordinates
 - [x] Test inverse transforms
 - [x] Support `__cuda_array_interface__`
 - [x] Support 32-bit floats
 - [x] Update CI scripts to build cuProj Python bindings and run pytests
 - [x] ~Documentation~ -- in follow-up PR #1237 
 - [ ] Support interleaved coordinates
 - [x] Support axis order the way PyProj does (e.g. not always lat, lon) (actually, this does now work the way PyProj does for the transformation we support, which requires (lat, lon) ordering for WGS84, and outputs (Easting, Northing) order. 
 - [ ] But we could add support for `always_xy` parameter that PyProj has.
 - [x] Support integer epsg code arguments in `Transformer.from_crs`
 - [x] Support mixed integer and string epsg code arguments in `Transformer.from_crs`
 - [x] Support tuples of ("EPSG", code) in `Transformer.from_crs`
 - [ ] Fix projection factory to not return a raw pointer
 - [x] cuprojshim clang-format
 - [x] Benchmark notebook

Authors:
  - Mark Harris (https://github.com/harrism)
  - Michael Wang (https://github.com/isVoid)
  - AJ Schmidt (https://github.com/ajschmidt8)

Approvers:
  - H. Thomson Comer (https://github.com/thomcom)
  - Ben Jarmak (https://github.com/jarmak-nv)
  - AJ Schmidt (https://github.com/ajschmidt8)
  - Vyas Ramasubramani (https://github.com/vyasr)
  - Michael Wang (https://github.com/isVoid)
  - Bradley Dice (https://github.com/bdice)

URL: #1217
@github-project-automation github-project-automation bot moved this from Review to Done in cuSpatial Aug 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants