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] kvikio v23.12 #322

Merged
merged 20 commits into from
Dec 6, 2023
Merged

[RELEASE] kvikio v23.12 #322

merged 20 commits into from
Dec 6, 2023

Conversation

raydouglass
Copy link
Member

❄️ Code freeze for branch-23.12 and v23.12 release

What does this mean?

Only critical/hotfix level issues should be merged into branch-23.12 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-23.12 into main for the release

raydouglass and others added 19 commits September 22, 2023 10:58
Forward-merge branch-23.10 to branch-23.12
Merge branch-23.10 into branch-23.12 and fix devcontainer CI workflow.
This PR builds conda packages using CUDA 12 on ARM.

Closes #281.

Authors:
  - Bradley Dice (https://github.com/bdice)

Approvers:
  - Ray Douglass (https://github.com/raydouglass)

URL: #282
This PR contains a set of performance-related improvements for the batch nvCOMP codec.
The short summary of the changes:
* Replaced multiple calls to CUDA  `memcpyAsync` with a single call to a CUDA kernel.
* Removed redundant memory allocations and copies (some of them are the result of the previous change).
* Vectorized loops, removed redundant loops.

As a result, decompression throughput on ERA5 data increased from **4** GB/s to **31** GB/s for LZ4 algorithm. For highly-compressible data from [nvCOMP benchmark](https://github.com/NVIDIA/nvcomp/blob/main/doc/Benchmarks.md), the increase is even higher: from **6** GB/s to about **110** GB/s. Other algorithms, such as GDeflate, show performance improvements as well.

Compression throughput was also improved, though the main target was decompression (compress once - decompress many kind of scenario).

Limitations: 
* these improvements are available only when directly using the codec's batch methods, such as `decode_batch` while passing reasonably-sized batches to saturate the GPU. That means these changes will not be available (for now) to `zarr` users as `zarr` serializes the calls into a sequence of `decode` calls.
* to get maximum performance, users should use equal-sized chunks (this is the default behavior in most of the cases anyway, such as `zarr`).

Authors:
  - Alexey Kamenev (https://github.com/Alexey-Kamenev)
  - Mads R. B. Kristensen (https://github.com/madsbk)

Approvers:
  - Mads R. B. Kristensen (https://github.com/madsbk)
  - Lawrence Mitchell (https://github.com/wence-)

URL: #293
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
This PR switches back to using `branch-23.12` for CI workflows because the CUDA 12 ARM conda migration is complete.

Authors:
  - Bradley Dice (https://github.com/bdice)

Approvers:
  - Jake Awe (https://github.com/AyodeAwe)

URL: #304
It this PR we introduce `CudaCodec`, which is a base class for all CUDA Condecs/Compressors.
This makes it possible to detect if an user tries to open a Zarr file using an incompatible compressor (see #297). 

Additionally, `kvikio.zarr.open_cupy_array()` now handles `mode="a"`

Authors:
  - Mads R. B. Kristensen (https://github.com/madsbk)

Approvers:
  - Lawrence Mitchell (https://github.com/wence-)

URL: #298
Removing an old and broken thread-pool module: 
```python
kvikio.thread_pool.num_threads_reset()
kvikio.thread_pool.get_num_threads()
```

Use the default module instead:
```python
kvikio.defaults.num_threads_reset()
kvikio.defaults.get_num_threads()
```

Authors:
  - Mads R. B. Kristensen (https://github.com/madsbk)

Approvers:
  - Lawrence Mitchell (https://github.com/wence-)

URL: #308
... also added some more examples.

Authors:
  - Mads R. B. Kristensen (https://github.com/madsbk)

Approvers:
  - Lawrence Mitchell (https://github.com/wence-)

URL: #312
Update the nvCOMP version used for compression/decompression to 3.0.4.

See also:

rapidsai/cudf#13815
rapidsai/rapids-cmake#451

Authors:
  - Vukasin Milovanovic (https://github.com/vuule)
  - Bradley Dice (https://github.com/bdice)

Approvers:
  - Bradley Dice (https://github.com/bdice)
  - Mads R. B. Kristensen (https://github.com/madsbk)
  - Ray Douglass (https://github.com/raydouglass)

URL: #314
Accidentally didn't commit this change in #314.
Update to use non deprecated signatures for `rapids_export` functions

Authors:
  - Robert Maynard (https://github.com/robertmaynard)
  - Bradley Dice (https://github.com/bdice)

Approvers:
  - Bradley Dice (https://github.com/bdice)

URL: #301
@raydouglass raydouglass requested review from a team as code owners November 30, 2023 19:31
Copy link

copy-pr-bot bot commented Nov 30, 2023

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@raydouglass raydouglass merged commit 8bbd481 into main Dec 6, 2023
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants