This is the release note of v12.0.0rc1. See here for the complete list of solved issues and merged PRs.
This is a release candidate of the CuPy v12 series. Please start testing your workload with this release to prepare for the final v12 release. To install: pip install -U --pre cupy-cuda11x -f https://pip.cupy.dev/pre. See the Upgrade Guide for the list of possible breaking changes in v12.
We are running a Gitter chat for general discussions and quick questions. Feel free to join the channel to talk with developers and users!
Highlights
Improved Coverage of cupyx.scipy.interpolate
The following interpolators have been implemented: BPoly, Akima1DInterpolator, PchipInterpolator.
Acknowledgements: This work was done by Edgar Andrés Margffoy Tuay (@andfoy) and Evgeni Burovski (@ev-br) under the support of the Chan Zuckerberg Initiative's Essential Open Source Software for Science program.
DLPack v0.8 Support
CuPy is now compatible with DLPack v0.8 to allow importing/exporting bool arrays.
Fixed Performance Issue with CUDA 12.0
This release fixes a critical performance regression in CUDA 12.0 that the on-disk kernel cache is ineffective, causing kernels to be recompiled for each python process. Users with CUDA 12.0 are strongly suggested to upgrade to this release.
Changes without compatibility
Change cupy.cuda.Device Behavior (#7427)
The CUDA current device (set via cupy.cuda.Device.use() or underlying CUDA API cudaSetDevice()) will now be reactivated when exiting a cupy.cuda.Device context manager. This reverts the change introduced in CuPy v10, making the behavior identical to the one in CuPy v9 or earlier. Please refer to the Upgrade Guide for the background of this decision.
Requirement Changes (#7405)
As per NEP 29, CuPy v12 drops support for Python 3.7 and NumPy 1.20. Support for SciPy 1.6 has been dropped as well.
Remove Texture Reference APIs (#7308)
Texture reference features (RawModule.get_texref() and TextureReference), which were marked deprecated in CUDA 10.1 and removed in CUDA 12.0, have been removed from CuPy.
Changes
New Features
- Initial experimental & private
cupyx.distributed._arrayimplementation (#7040) - Add
PchipInterpolatortocupyx.scipy.interpolate(#7255) - Add
Akima1DInterpolatortocupyx.scipy.interpolate(#7260) - Add
cached_codetoElementwiseKernelandReductionKernel(#7265) - Enable spline methods on
RegularGridInterpolator(#7334) - Add
BPolytocupyx.scipy.interpolate module(#7343)
Enhancements
- Use NumPy 1.24 in CI and bump baseline API (#7248)
- Use warp size from
runtime.getDeviceProperties(#7302) - Update DLPack to v0.8 to support bool arrays (#7307)
- Remove texture reference completely (#7308)
- Work around a potential OOM error raised by CUB histogram (#7316)
- Mark
cupy.cuda.profiler.initializedeprecated as it is removed in CUDA 12 (#7377) - Drop support for Python 3.7, NumPy 1.20, and SciPy 1.6 (#7405)
- Raise RuntimeError if pylibraft is unavailable (#7411)
- Revert
cupy.cuda.Devicebehavior to v9 (#7427) - Fix
ndarray.fillto raiseComplexWarning(#7393) - Fix
arange()to raiseTypeErrorin boolean case (#7394)
Performance Improvements
- Change implementation of fftshift and ifftshift (#7399)
Bug Fixes
- Fix kernel cache not working in CUDA 12.0 (#7345)
- Imporves stability of orthogonization step in
cupyx.scipy.sparse.eigsh(#7356) - Do not test NumPy version for private APIs (#7368)
Code Fixes
- Small fixes and refactor of casting related things (#7322)
Documentation
- Doc: fix wrong time unit (#7312)
- Doc: add docs for contiguity policy (#7344)
- Doc: downgrade pydata-sphinx-theme to v0.11.0 (#7375)
- Fix typo in docstring (#7402)
- DOC: cupyx.interpolate: document limitations on ROCm (#7419)
- Add upgrade guide for v12 (#7430)
Installation
- Add
CUPY_INCLUDE_PATHandCUPY_LIBRARY_PATHenv vars (#7305) - Bump docker image to CUDA 11.8.0 (#7429)
- Bump version to v12.0.0rc1 (#7434)
Tests
- CI: tentatively use SciPy 1.9 in Windows (#7326)
- CI: Add optuna 3.0 (#7333)
- Avoid int8 overflow warning in
TestRoundHalfway(#7338) - Avoid int8 overflow in some tests (#7339)
- Fix int8 overflow in vectorize tests (#7340)
- Avoid casting nan value to integer type in
nanargmin/maxtests (#7341) - Add CI for CUDA 12.0 on Windows (#7349)
- Remove invalid pytest markers and turn on strict mode (#7350)
- Drop support for Optuna v2 (#7363)
- Filter SQLAlchemy 2.0 warnings raised from Optuna v2 (#7364)
- Fix pre-commit configuration error (#7369)
- Avoid int8 overflow in core test (#7387)
- Fix sumprod test to avoid uint overflow (#7395)
- Avoid
fillvalueoverflow incupyx.scipy.signaltest (#7397)
Contributors
The CuPy Team would like to thank all those who contributed to this release!
Contributors:
@andfoy @asi1024 @emcastillo @ev-br @kmaehashi @leofang @Nordicus @Raghav323 @RisaKirisu @seberg @wstolp