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

[RELEASE] cuspatial v21.08 #439

Merged
merged 18 commits into from
Aug 4, 2021
Merged

[RELEASE] cuspatial v21.08 #439

merged 18 commits into from
Aug 4, 2021

Conversation

GPUtester
Copy link
Contributor

❄️ Code freeze for branch-21.08 and v21.08 release

### What does this mean?
Only critical/hotfix level issues should be merged into `branch-21.08` until release (merging of this PR).

### What is the purpose of this PR?
- Update documentation
- Allow testing for the new release
- Enable a means to merge `branch-21.08` into `main` for the release

raydouglass and others added 17 commits May 19, 2021 16:50
Bumps the version of cuSpatial in CMakeLists.txt.

Authors:
  - Mark Harris (https://github.com/harrism)

Approvers:
  - H. Thomson Comer (https://github.com/thomcom)

URL: #410
[gpuCI] Forward-merge branch-21.06 to branch-21.08 [skip ci]
According to [this issue](sphinx-doc/sphinx#7747), `add_stylesheet` has been replaced with `add_css_file`. This has caused some errors in recent doc builds. This PR replaces `add_stylesheet` with `add_css_file`.

Authors:
  - AJ Schmidt (https://github.com/ajschmidt8)

Approvers:
  - H. Thomson Comer (https://github.com/thomcom)

URL: #421
`parallel_search` was producing the wrong indexes for deciding which coefficients to use for interpolation. This was hidden by the test cases, but exposed via python as I was researching another bug.

This PR resolves the issue with parallel_search so that it produces the correct indexes for interpolation.

I'm improving the testing a bit more before asking for reviews.

Authors:
  - H. Thomson Comer (https://github.com/thomcom)
  - Paul Taylor (https://github.com/trxcllnt)

Approvers:
  - Mark Harris (https://github.com/harrism)
  - Paul Taylor (https://github.com/trxcllnt)

URL: #405
…ing (#430)

This PR contains three distinct changes required to get cuspatial builds working and tests passing again:
1. RMM switched to rapids-cmake (rapidsai/rmm#800), which requires CMake 3.20.1, so this PR includes the required updates for that.
2. The Arrow upgrade in cudf also moved the location of testing utilities (rapidsai/cudf#7495). Long term cuspatial needs to move away from use of the testing utilities, which are not part of cudf's public API, but we are currently blocked by rapidsai/cudf#8646, so this PR just imports the internal `assert_eq` method as a stopgap to get tests passing.
3. The changes in rapidsai/cudf#8373 altered the way that metadata was propagated to libcudf outputs from previously existing cuDF Python objects. The new code paths require cuspatial to override metadata copying at the GeoDataFrame rather than the GeoColumn level in order to ensure that information about column types is lost in the libcudf round trip and the metadata copying functions are now called on the output DataFrame rather than the input one.

This PR supersedes #427, #428, and #429, all of which can now be closed.

Authors:
  - Vyas Ramasubramani (https://github.com/vyasr)
  - GALI PREM SAGAR (https://github.com/galipremsagar)

Approvers:
  - AJ Schmidt (https://github.com/ajschmidt8)
  - Christopher Harris (https://github.com/cwharris)

URL: #430
Fixes #393

We switched to the exclusive scan approach to Hausdorff because certain benchmarks indicated better performance. Apparently those benchmarks were inadequate or just plain badly written (by me), and performance was in fact worse. This became apparent while fixing the OOM error reported in #393.

I copied the 0.14 implementation in to the 21.08 branch to re-benchmark. here are the results:

cuspatial@0.14:
```
------------------------------------------------------------------------------------------------------------
Benchmark                                                  Time             CPU   Iterations UserCounters...
------------------------------------------------------------------------------------------------------------
HausdorffBenchmark/hausdorff/100/64/manual_time         1.62 ms         1.78 ms          428 items_per_second=23.9898G/s
HausdorffBenchmark/hausdorff/512/64/manual_time         43.9 ms         44.1 ms           16 items_per_second=23.6053G/s
HausdorffBenchmark/hausdorff/4096/64/manual_time        2810 ms         2810 ms            1 items_per_second=23.6845G/s
HausdorffBenchmark/hausdorff/6000/64/manual_time        6148 ms         6148 ms            1 items_per_second=23.2318G/s
HausdorffBenchmark/hausdorff/100/100/manual_time        3.31 ms         3.47 ms          210 items_per_second=29.0333G/s
HausdorffBenchmark/hausdorff/512/100/manual_time        88.9 ms         89.1 ms            8 items_per_second=28.7737G/s
HausdorffBenchmark/hausdorff/4096/100/manual_time       5842 ms         5842 ms            1 items_per_second=28.132G/s
HausdorffBenchmark/hausdorff/6000/100/manual_time      12698 ms        12698 ms            1 items_per_second=27.7783G/s
```
cuspatial@21.08 (with fix for OOM, as seen in previous commits of this PR)
```
------------------------------------------------------------------------------------------------------------
Benchmark                                                  Time             CPU   Iterations UserCounters...
------------------------------------------------------------------------------------------------------------
HausdorffBenchmark/hausdorff/100/64/manual_time         17.4 ms         17.6 ms           38 items_per_second=2.2391G/s
HausdorffBenchmark/hausdorff/512/64/manual_time          489 ms          490 ms            2 items_per_second=2.11979G/s
HausdorffBenchmark/hausdorff/4096/64/manual_time       37120 ms        37119 ms            1 items_per_second=1.79299G/s
HausdorffBenchmark/hausdorff/6000/64/manual_time       82732 ms        82729 ms            1 items_per_second=1.7265G/s
HausdorffBenchmark/hausdorff/100/100/manual_time        43.4 ms         43.7 ms           16 items_per_second=2.21402G/s
HausdorffBenchmark/hausdorff/512/100/manual_time        1341 ms         1341 ms            1 items_per_second=1.90885G/s
HausdorffBenchmark/hausdorff/4096/100/manual_time      94898 ms        94894 ms            1 items_per_second=1.7319G/s
HausdorffBenchmark/hausdorff/6000/100/manual_time     199120 ms       199115 ms            1 items_per_second=1.77138G/s
```

The performance is bad, and this regression is my fault. Fortunately I was able to quickly reverse this regression and improve performance while getting rid of a bunch of code (and learning a lot in the process). This PR re-implements Hausdorff as a straightforward custom kernel that requires zero intermediate memory.

this pr:
```
------------------------------------------------------------------------------------------------------------
Benchmark                                                  Time             CPU   Iterations UserCounters...
------------------------------------------------------------------------------------------------------------
HausdorffBenchmark/hausdorff/100/64/manual_time         1.31 ms         1.47 ms          526 items_per_second=29.6763G/s
HausdorffBenchmark/hausdorff/512/64/manual_time         23.2 ms         23.3 ms           30 items_per_second=44.7567G/s
HausdorffBenchmark/hausdorff/4096/64/manual_time        1589 ms         1590 ms            1 items_per_second=41.8747G/s
HausdorffBenchmark/hausdorff/6000/64/manual_time        3170 ms         3170 ms            1 items_per_second=45.0638G/s
HausdorffBenchmark/hausdorff/100/100/manual_time        2.92 ms         3.08 ms          239 items_per_second=32.8852G/s
HausdorffBenchmark/hausdorff/512/100/manual_time        55.8 ms         55.8 ms           12 items_per_second=45.8415G/s
HausdorffBenchmark/hausdorff/4096/100/manual_time       3547 ms         3547 ms            1 items_per_second=46.3317G/s
HausdorffBenchmark/hausdorff/6000/100/manual_time       7658 ms         7658 ms            1 items_per_second=46.0564G/s
```

Authors:
  - Christopher Harris (https://github.com/cwharris)

Approvers:
  - Mark Harris (https://github.com/harrism)
  - Paul Taylor (https://github.com/trxcllnt)
  - AJ Schmidt (https://github.com/ajschmidt8)

URL: #424
With rapidsai/integration#286, the version of `isort` running on gpuCI will be bumped to 5.6.4, allowing us to enforce the sorting of packages in Cython (pyx, pxd) files. This PR intends to:

- Enable these checks in the gpuCI style script
- Enable Cython package resorting in the pre-commit hook
- Resort all the Cython files in this repo so they pass the newly enabled checks

These checks are optional, meaning that even without this being merged, gpuCI should still pass on style checks even when rapidsai/integration#286 is merged.

Authors:
  - Charles Blackmon-Luca (https://github.com/charlesbluca)

Approvers:
  - H. Thomson Comer (https://github.com/thomcom)
  - AJ Schmidt (https://github.com/ajschmidt8)

URL: #419
Follow up PR to: rapidsai/cudf#6695. Performing the same changes but for `rapidsai/cuspatial`

Depends on: rapidsai/integration#304

Authors:
  - Conor Hoekstra (https://github.com/codereport)

Approvers:
  - Dillon Cullinan (https://github.com/dillon-cullinan)
  - H. Thomson Comer (https://github.com/thomcom)

URL: #426
rapidsai/cudf#8666 modified `cudf::test` APIs to accept a verbosity enum as a parameter to control output, which is backwards incompatible with the previously boolean parameter.

Authors:
  - Vyas Ramasubramani (https://github.com/vyasr)

Approvers:
  - Mark Harris (https://github.com/harrism)
  - Paul Taylor (https://github.com/trxcllnt)

URL: #433
As of rapidsai/cudf#7495 the `cudf.tests.utils` module (and in particular the `assert_eq` function) are no longer part of the public API. This PR switches tests to use the public testing functions in the `cudf.testing` subpackage.

This PR is currently blocked by #430 and rapidsai/cudf#8646.

Authors:
  - Vyas Ramasubramani (https://github.com/vyasr)

Approvers:
  - Christopher Harris (https://github.com/cwharris)
  - Paul Taylor (https://github.com/trxcllnt)

URL: #431
@GPUtester GPUtester requested review from a team as code owners July 30, 2021 14:08
@github-actions github-actions bot added cmake Related to CMake code or build configuration conda Related to conda and conda configuration libcuspatial Relates to the cuSpatial C++ library gpuCI Related to Continuous Integration / Automation Python Related to Python code labels Jul 30, 2021
@raydouglass raydouglass merged commit 5119e15 into main Aug 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cmake Related to CMake code or build configuration conda Related to conda and conda configuration gpuCI Related to Continuous Integration / Automation libcuspatial Relates to the cuSpatial C++ library Python Related to Python code
Projects
None yet
Development

Successfully merging this pull request may close these issues.