pypi cupy 10.0.0rc1
v10.0.0rc1

latest releases: 14.2.0, 14.1.1, 14.1.0...
4 years ago

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_api typing (#5821)
  • Add trim_mean from 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 dtype and casting arguments to cupy.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_config runnable without GPU (#5835)
  • NotImplementedError clarity (#5841)
  • Change Device.use() semantics to align with Stream.use() (#5853)
  • Drop support for NumPy 1.17 (#5857)
  • Deprecate cupy.cuda.compile_with_cache (#5858)
  • Show error when importing cupy.array_api with Python 3.7 (#5873)
  • Enable new random api in ROCm 4.3 (#5895)
  • Add bitorder option to cupy.packbits (#5898)
  • Support using cuTENSOR in elementwise ufuncs (#5902)
  • Workaround ROCm 4.3 LLVM_PATH issue in hipRTC (#5933)
  • Update the Array API module (#5939)
  • Add cupyx.profiler module (#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_t for faster address calculation (#5981)

Bug Fixes

  • Use cudaRuntimeGetVersion instead of CUDA_VERSION for 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_num to comply with NumPy API (#5870)
  • Do not use cuTENSOR unless available (#5872)
  • Fix _get_cuda_build_version for ROCm (#5888)
  • Fix __repr__ of mode and scalar in cuTENSOR (#5901)
  • Fix to push device after setDevice succeed (#5904)
  • Fix ndarray.clip to match numpy (#5910)
  • Fix copyto with non-contiguous multidevice (#5913)
  • Avoid use of setDevice in CuPy codebase (#5915)
  • Fix max blocksize used in cupyx.optimizing.optimize for HIP (#5921)
  • Do not use with device in code base (#5963)
  • Fix __dlpack__ protocol (#5970)
  • Fix cupyx.tools.install_library for windows (#5977)
  • Fix ravel for strides 0 (#5978)
  • Avoid using with context 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 addAddNameExpression with addNameExpression in NVRTC binding (#5938)
  • Split loop testing helpers into _loops (#5967)
  • Make CUPY_DLPACK_EXPORT_VERSION consistent (#5982)
  • Fix comment in device switching (#5984)
  • Avoid using deprecated setDaemon method (#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 ppc64le and aarch64 are supported on conda-forge (#5865)
  • Mention deprecation of compile_with_cache() in upgrade guide (#5883)
  • Add docs for scipy.sparse.csgraph module (#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.matrix in the difference section (#5966)
  • Add PyTorch with RawKernel example 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

  • Bump CUDA/ROCm version in docker images (#5859)
  • Fix library installer to limit architecture (#5926)

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-tests in 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 ccache path 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_mean test (#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 ccache in 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

Don't miss a new cupy release

NewReleases is sending notifications on new releases.