This is the release note of v10.0.0rc1. See here for the complete list of solved issues and merged PRs.
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
Add cupyx.distributed (#5590)
This new version provides a wrapper over NVIDIA’s NCCL library to perform communication in an MPI-like style. Currently, point-to-point and collective communication primitives are supported. Check the documentation for a complete reference of the functions.
CuPy now supports CUDA 11.5, Python 3.10, and NVIDIA Jetson
Wheels for CUDA 11.5 (cupy-cuda115) are now available.
Python 3.10 wheels are also available for all supported CUDA / ROCm versions.
Wheels for Jetson can be found in the attached artifacts (pip install cupy-cuda112 -f https://pip.cupy.dev/pre).
Enable Generator random API in ROCm 4.3 (#5895)
ROCm 4.3 fixes a series of issues that prevented the Generator random API (#4177) to run in AMD devices.
Changes without compatibility
Refer to the Upgrade Guide for the detailed description.
Automatically enable peer access (#5496)
Peer access is enabled by default when a CuPy ndarray is stored in a different device as long as the machine topology allows it.
Change Device.use() semantics to align with Stream.use() (#5853)
When exiting a context, the current device is now reverted back to the device of the parent's context scope, not the device last use()d.
Automatically convert big-endian numpy.ndarray to little-endian in cupy.array() and its variants (#5828)
Previously CuPy was copying the given numpy.ndarray to GPU as-is, regardless of the endianness. In CuPy v10, big-endian arrays are converted to little-endian before the transfer, which is the native byte order on GPUs. This change eliminates the need to manually change the array endianness before creating the CuPy array.
Add cupyx.profiler module (#5940)
A new module cupyx.profiler is added to host all profiling related APIs in CuPy. Accordingly, the following APIs are relocated to this module:
cupy.prof.TimeRangeDecorator()->cupyx.profiler.time_range()cupy.prof.time_range()->cupyx.profiler.time_range()cupy.cuda.profile()->cupyx.profiler.profile()cupyx.time.repeat()->cupyx.profiler.benchmark()
The old routines are deprecated.
Deprecate cupy.cuda.compile_with_cache (#5858)
An internal API cupy.cuda.compile_with_cache() has been marked as deprecated as there are better alternatives (RawModule, RawKernel). While it has a long-standing history, this API has never been meant to be public. We encourage downstream libraries and users to migrate to the aforementioned public APIs.
Announcements
Drop support for CUDA 10.1 or earlier (#5770)
As per the RFC in #5717 and Twitter, the minimum CUDA version that will be supported by CuPy v10 is CUDA 10.2.
Drop support for NCCL 2.6 and 2.7 (#5855)
The minimum supported version for CuPy v10 will be NCCL 2.8 as it implements the required primitives for cupyx.distributed to work.
Drop support for Python 3.6 (#5771)
Following the Python 3.6 sunset on December 2021, and the compatibility lines with NumPy, starting CuPy v10, Python 3.6 will no longer be supported.
Drop support for NumPy 1.17 (#5857)
As per NEP29, NumPy 1.17 support has been dropped on July 26, 2021.
Alpha/Beta/RC wheels no longer distributed through PyPI
-
As per the discussion in #5671, we stopped uploading pre-release binary wheels to PyPI for the health of the ecosystem. Pre-release wheels can now be downloaded from the recently introduced custom index (e.g.,
pip install cupy-cudaXXX -f https://pip.cupy.dev/pre) . Note that the sdist package is available in PyPI for all versions. -
Outdated (v8.0.0rc1 or earlier) pre-release binaries have been removed from PyPI. See #5667 for details.
Changes of supported cuSPARSELt version
We are planning to drop cuSPARSELt v0.1.0 support in CuPy v10 final release. (#6045)
Changes
New Features
- Add
cupyx.distributed(#5590) - Add
cupy.positive()(#5774) - Update
cupy.array_api(#5783) - Update
cupy.array_apityping (#5821) - Add
trim_meanfrom scipy.stats to cupyx (#5900) - Implement more array creation & serialization methods (#5925)
Enhancements
- Automatically enable peer access (#5496)
- Update DLPack header to v0.6 to support exchanging arrays backed by managed memory (#5512)
- Lazy-preload cuDNN (#5677)
- Support ROCm managed memory (#5685)
- Fix import failure when pytest namespace is available (#5703) (#5707)
- Support cuTENSOR 1.3.3 (#5732)
- Add
dtypeandcastingarguments tocupy.concatenate()(#5759) - Automatically convert big-endian data to little-endian in
cupy.array()and its variants (#5828) - Use pylibcugraph for
connected_components(#5830) - Make
show_configrunnable without GPU (#5835) NotImplementedErrorclarity (#5841)- Change
Device.use()semantics to align withStream.use()(#5853) - Drop support for NumPy 1.17 (#5857)
- Deprecate
cupy.cuda.compile_with_cache(#5858) - Show error when importing
cupy.array_apiwith Python 3.7 (#5873) - Enable new random api in ROCm 4.3 (#5895)
- Add
bitorderoption tocupy.packbits(#5898) - Support using cuTENSOR in elementwise ufuncs (#5902)
- Workaround ROCm 4.3
LLVM_PATHissue in hipRTC (#5933) - Update the Array API module (#5939)
- Add
cupyx.profilermodule (#5940) - Use SHA1 hash for kernel cache key to support Linux in FIPS-compliant mode (#5988)
- Merge fp16 headers for CUDA 11.2+ (#5993)
- Support CUDA 11.5 for library installer (#5996)
- Add cupy-cuda115 to duplicate detection (#5999)
- Suggest using binary packages when build failed (#6028)
- Improve import error message (#6029)
- Display license terms when downloading libraries (#6032)
- Fix error type/message for duplicate value in axis (#5953)
Performance Improvements
- Use
index_tfor faster address calculation (#5981)
Bug Fixes
- Use
cudaRuntimeGetVersioninstead ofCUDA_VERSIONfor CUDA Python support (#5723) - Allow generating cubins for the max known CC (#5779)
- Fix hypergeometric distribution implementation to use
int(#5785) - Fix non-determinisitc behavior in
cupy.random.shuffle(#5838) - Avoid using
driver.get_build_version(#5861) - Fix
nan_to_numto comply with NumPy API (#5870) - Do not use cuTENSOR unless available (#5872)
- Fix
_get_cuda_build_versionfor ROCm (#5888) - Fix
__repr__of mode and scalar in cuTENSOR (#5901) - Fix to push device after
setDevicesucceed (#5904) - Fix
ndarray.clipto match numpy (#5910) - Fix
copytowith non-contiguous multidevice (#5913) - Avoid use of
setDevicein CuPy codebase (#5915) - Fix max
blocksizeused incupyx.optimizing.optimizefor HIP (#5921) - Do not use
with devicein code base (#5963) - Fix
__dlpack__protocol (#5970) - Fix
cupyx.tools.install_libraryfor windows (#5977) - Fix
ravelfor strides 0 (#5978) - Avoid using
withcontext for streams (#5985) - Fix cuTENSOR installation on Windows (#6007)
- Fix hash length for SHA1 (#6023)
- Fix: Add missing output dtype check for direct
correlate/convolve(#6046) - Fix cuDNN version not displayed in wheel installation (#6054)
Code Fixes
- Code-fix on
cupy.array()(#5842) - Successive code fix on
cupy.array()(#5844) - Fix kernel name of
cupyx.scipy.ndimage.interpolation.map_coordinates(#5845) - Replace
addAddNameExpressionwithaddNameExpressionin NVRTC binding (#5938) - Split loop testing helpers into
_loops(#5967) - Make
CUPY_DLPACK_EXPORT_VERSIONconsistent (#5982) - Fix comment in device switching (#5984)
- Avoid using deprecated
setDaemonmethod (#6059)
Documentation
- Update upgrade guide (#5824)
- Update list of supported OS (#5854)
- Drop support for NCCL 2.6 and 2.7 (#5855)
- Add docs for
driver.get_build_version(#5860) - Document
ppc64leandaarch64are supported on conda-forge (#5865) - Mention deprecation of
compile_with_cache()in upgrade guide (#5883) - Add docs for
scipy.sparse.csgraphmodule (#5903) - Refine SciPy-compatible API documentation (#5905)
- Improve the comparison table (#5907)
- Remove CUDA 10.0 / 10.1 from README (#5924)
- Improve some docs on interoperability and
cupy.linalg.cholesky(#5941) - Add footnotes for functions unimplemented in CuPy (#5942)
- Document
CUPY_ACCELERATORS(#5948) - Fix section heading level (#5962)
- Mention
np.matrixin the difference section (#5966) - Add PyTorch with
RawKernelexample to docs (#5973) - Add
sphinx-copybutton(#5976) - Add favicon to docs (#5980)
- Replace favicon with high resolution one (#5986)
- Update upgrade guide for v10 (#5994)
- Cover a bit more of cuTENSOR in perf guide (#5995)
- Support CUDA 11.5 on documents (#5997)
- Fix typo in copyright line (#6030)
- Add Python 3.10.0 to support list (#6038)
- Added Compatibility Matrix to Upgrade Guide (#6053)
Installation
Tests
- Introduce new toolset for CI (#5474)
- Simplify legacy ROCm test script for FlexCI (#5753)
- Use pytest in
TestJoin(#5764) - Clean up plan cache in a FFT slow test (#5811)
- Improve handling of FlexCI test runs (#5814)
- Tentatively disable pytest-xdist (#5826)
- Add FlexCI projects for Linux (#5836)
- Fix ROCm tests does not export
LLVM_PATH(#5849) - Add test for CI generator (#5850)
- Remove CUDA 10.0/10.1 and Python 3.6 from FlexCI tests (#5851)
- Add mypy test for
cupy_builder(#5856) - Add
array-api-testsin FlexCI (#5862) - Upload cache even when test failed in FlexCI (#5867)
- Improve CI generator to emit warning on uncovered axis (#5871)
- Add CI for
pylibcugraph(#5874) - Build CI docker images using BuildKit to utilize cache from registry (#5875)
- Show hint to reproduce CI result locally in shell target (#5877)
- Show time taken for build in CI (#5878)
- Increase parallelism of CuPy build in CI (#5880)
- Copy source directory to support pip 21.3 (#5881)
- Fix
ccachepath to support CentOS (#5882) - Upload Docker image after running branch test (#5884)
- Avoid cache download failure in CI when conflicting with cache upload (#5890)
- Add FlexCI project for doctest, example and head test (#5891)
- FlexCI test against Python 3.10 (#5899)
- Fix fft test skip condition (#5908)
- Add Slack/Gitter notification when branch test fail (#5914)
- Declare the same environment variables as Linux in Windows CI (#5923)
- Fix
trim_meantest (#5944) - Temporarily skip Array API tests on ROCm (#5945)
- Relax sparse linalg testing tolerance (#5952)
- CI: Fix ROCm build test (FlexCI) failing (#5956)
- CI: Fix ccache not working (#6016)
- CI: Use
ccachein Pre-review Test (#6027) - CI: Migrate ROCm build test from FlexCI to GitHub Actions (using ROCm docker image) (#6034)
- CI: Merge doctest to example test in FlexCI (#6036)
- CI: allow running tests selectively (#6039)
- CI: Fix pip command use in FlexCI instance (#6049)
- Fix notifier to work on Python 3.6 (#6056)
- CI: Do not run full combination test even for branch tests for ROCm (#5955)
Others
- Avoid triggering docker workflow on release of forked repos (#5863)
- Refine issue templates using Issue Forms (#5868)
- Bump version to v10.0.0rc1 (#6042)
Contributors
The CuPy Team would like to thank all those who contributed to this release!
@Anubha13kumari @SaharCarmel @SwastikTripathi @amathews-amd @anaruse @asi1024 @carterbox @drbeh @emcastillo @iskode @kmaehashi @lanttu1243 @leofang @okuta @prkhrsrvstv1 @spiralray @takagi @toslunar