This is the release note of v8.0.0b4. See here for the complete list of solved issues and merged PRs.
Highlights
CuPy v8.0.0b4 focuses on performance improvements by adding a general CUB based reduction kernel contributed by @leofang (#3244). We also introduce support for the upcoming CUDA 11 (#3405) although we don’t provide wheels for it yet. Last but not least, several new routines are added to improve the NumPy and SciPy functions coverage.
Changes without compatibility
Change the behavior of dia_matrix.diagonal to follow SciPy 1.5.0 specification. It does not raise ValueError for invalid values anymore. Now an empty array is returned instead. (#3469)
New Features
- Add
cupy.shape(#3229) - CUB-backed
_SimpleReductionKernel(#3244, thanks @leofang!) - Add
cupyx.scipy.ndimagesum, mean, standard deviation and variance (#3259, thanks @niteya-shah!) - Support C++ template code in
cupy.RawModule(#3319, thanks @leofang!) - Add
cupy.piecewise(#3329, thanks @Dahlia-Chehata!) - Add
cupy.trim_zeros(#3340, thanks @Dahlia-Chehata!) - Add
cupy.sort_complex(#3348, thanks @Dahlia-Chehata!) - Add
cupy.who(#3361) - Support
cudaDeviceGetLimit/cudaDeviceSetLimit(#3387, thanks @leofang!) - Add
polycompanion(#3398, thanks @Dahlia-Chehata!) - Add wrappers for
cusolverDn<t>potrfBatchedandcusolverDn<t>potrsBatched(#3399, thanks @IvanYashchuk!) - Add
polyvander(#3404, thanks @Dahlia-Chehata!) - Support CUDA 11.0 (#3405)
- Add
cupy.shares_memory(#3432) - Detect and show Thrust build version (#3444, thanks @leofang!)
Enhancements
- Refactor cuTENSOR handle initialization (#2772)
- Deprecate
testing.numpy_cupy_raises(#3098) - Align vector access with #3020 #3022 (#3228)
- Get arch per device and support CUDA 9.2+ (#3366, thanks @leofang!)
- Fix cuTENSOR routines to raise
ValueErrorfor invalid arguments (#3374) - Support
ignore_errorin kernel optimization (#3410) - Support boolean in
cupyx.scipy.ndimagestats functions (#3419) - Raise
TypeErrorincupy.ndarray.__array__(#3421) - Make Optuna optional to allow import (#3427)
- Implement
flatiter.copy()(#3442)
Performance Improvements
- Speed up CSR SpMV by orders of magnitude (#3430, thanks @leofang!)
- Index
CArrayusing 32-bit indexes (#3448)
Bug Fixes
- Assert that all the pointers are in the same device in
concatenate(#3285) - Fix
_count_non_nandatatype for windows (#3350) - Fix
cupyx.time.repeatto accumulate duration after GPU synchronization (#3375) - Fix
PerfCaseResultchanging_ts(#3400) - Fix intermediate dtypes for float16 inputs in
cupyx.scipy.ndimagestats functions (#3402) - Properly reset current stream in case null stream is destroyed (#3423)
- Fix
cupy.power(0j, 0j)(#3449) - Fix
TypeErrorin parameterize test catchingCUDADriverError(#3451) - Fix
scipy.dia_matrix.diagonalforscipy==1.5.0(#3469)
Code Fixes
- Fix array() for readability (#2935)
- Remove unnecessary comparison in
cupy.linalg.svd(#3373) - Fix initial values in
cupy._environment(#3413, thanks @leofang!) - Use
find_packagesinsetup.py(#3424) - Refactor CUB-backed
_SimpleReductionKernel(#3443)
Documentation
- Add documentation for
cupyx.optimizing.optimize(#3397) - Fix sphinx version for travis (#3416)
- Document
cupy.fromfile(#3439, thanks @jakirkham!) - Fix typos in
cupy.linalg.det docstring(#3456, thanks @grlee77!) - Fix docstring of
tofile()(#3460, thanks @leofang!)
Installation
- Add optuna and remove theano for doctest requirement (#3446)
Tests
- Add tests for
cupy.cuda.cub(#2598, thanks @leofang!) - Remove chainercv CI configs (#3055)
- Add a test to cover accepting large-size arrays via
__cuda_array_interface__(#3297, thanks @leofang!) - Add
__init__.pyto allow importing test packages (#3395) - Fix ChainerCV tests failing in master branch (#3411)
- Test CUB SpMV (#3428, thanks @leofang!)
- Deprecate
testing.empty(#3438) - Skip some
RawModuletests for wrong condition (#3453) - Use
unittest.mock(#3468)
Others
- Bump version to v8.0.0b4 (#3481)