This is the release note of v8.0.0b1. See [here](https://github.com/cupy/cupy/milestone/68?closed=1) for the complete list of solved issues and merged PRs.
Known packaging issues:
* CuPy build fails when using CUDA 8.0 on Windows (3076). Due to this issue, `cupy-cuda80` wheel packages for Windows are unavailable for this version. Linux or CUDA 9.0+ users are unaffected.
Highlights
CuPy gets faster and more stable towards its v8.0.0 release. This version adds a handful of new routines, adds library wide performance improvements and corrects several bugs.
Changes without compatibility
- Removed `cupy.scatter_add`, which had been deprecated since CuPy v4. Use `cupyx.scatter_add` instead.
New Features
- Add `get_global()` to `cupy.RawModule` (2510, thanks leofang!)
- Support multi-GPU in `cupy.cuda.cufft.Plan1d` (2644, thanks leofang!)
- Add `hstack`, `vstack`, and `bmat` to `cupyx.scipy.sparse` (2665, thanks cjnolet!)
- Add `cupy.require` (3083, thanks niteya-shah!)
- Add `cupy.compress` (3103, thanks Harshan01!)
- Add `cupy.ravel_multi_index` (3104, thanks grlee77!)
- Add `cupy.extract` (3109, thanks Harshan01!)
- Add `cupy.bitwise_not` as alias to `invert` (3120, thanks Harshan01!)
- Add `cupy.argwhere` (3135, thanks rushabh-v!)
- Add `cupy.select` (3138, thanks niteya-shah!)
- Add `cupy.cuda.ExternalStream` (3141)
- Add `cupy.array_equal` (3189, thanks rushabh-v!)
Enhancements
- Add `ndarray` variants AND inplace support in `fallback_mode` (2391, thanks Piyush-555!)
- Support array-like start/stop and add `axis` argument to `linspace` (2461, thanks grlee77!)
- Add fp16 support of CUB (2600, thanks y1r!)
- Raise errors instead of assertion on array type checks (2795)
- Drop support for NumPy 1.15 or earlier (2938)
- Import `using_allocator` in `cupy.cuda` (2951, thanks jakirkham!)
- Remove `__future__` imports (2995)
- Support CUB `prod` (3067, thanks leofang!)
- Remove deprecated `cupy.scatter_add` (3074)
- Update `cupy.pad` to use `cupy.linspace` instead of `numpy.linspace` internally (3101, thanks grlee77!)
- Histogram update: support `range`, `weights` and `density` (3124, thanks grlee77!)
- Add support for `ord` = 2, -2, and 'nuc' in `cupy.linalg.norm` (3130, thanks rushabh-v!)
- Use `ElementwiseKernel` in `cupy.fill_diagonal` (3139)
- Allow `dia_matrix` creation from SciPy equivalent (3160, thanks jakirkham!)
- Add `labels` in the benchmark and add `kwargs` to `repeat` (3172, thanks rushabh-v!)
- Add `out` parameter to `cupy.concatenate` and `cupy.stack` (2983)
- Fix `reshape` to raise `ValueError` for order 'K' (3123)
Performance Improvements
- Improve cuDNN performance when using deterministic mode (1380)
- Improve performance of `cumsum` and `cumprod` (2907)
- Improve `ndimage` `convolve` and `correlate` (3179)
- Add check of `c_contiguous` when indexing `CArray` (3191)
Bug Fixes
- Fix an issue using non-existing attribute in cub.pyx (2985)
- Use `size_t nbytes` in `__cuda_array_interface__` (3009, thanks jakirkham!)
- Fix `fill_diagonal` (3011)
- Fix `cupy.random.multivariate_normal` (3018, thanks espg!)
- Use Python scalar as random seed (3054)
- Properly decrement total bytes in memory pool (3068)
- Fix condition to use slice copy in `ndarray.__setitem__` (3088)
- Fix compiler bug when building `cupy.cuda.cub` with CUDA < 9.2 (3089, thanks leofang!)
- Fix `cub_reduction` for `CUPY_CUB_MIN` and float16 arrays (3100)
- Use `time.process_time` instead of `time.clock` (3128, thanks rushabh-v!)
- Add support for 0 sized matrices in `svd` (3140, thanks rushabh-v!)
- Fix CUB-based `cupy.prod` for half precision (3148, thanks leofang!)
- Fix error type and message in `coo_matrix` (3150)
- Allow `MatDescriptor` to be pickle-able (3157, thanks jakirkham!)
- Fix `erfinv` & `erfcinv` in `cupyx.scipy.special` (3159, thanks leofang!)
- Remove some xfails in sorting tests (3167)
- Fix `Event.__del__` behavior on shutdown` (3176)
- Add the missing initialization value in the reduction test (3194, thanks leofang!)
Code Fixes
- Clean up `internal.pyx` (`get_contiguous_strides`) (1950)
- Remove custom `tempdir` context manager (3003)
- Use `intptr_t` instead of `size_t` for cuSPARSE and cuBLAS handles (3081, thanks Harshan01!)
- Use `intptr_t` for cuDNN handles (3082, thanks Harshan01!)
- Minor fix to `using_allocator` (3094)
- Remove `IndexOrValueError` (3096)
- Remove unused argument in `fill_diagonal` (3171)
- Silence sign comparison warning (cont'd) (3181, thanks leofang!)
- Avoid enum comparison (-Wenum-compare) (3182, thanks leofang!)
- Remove unused, deprecated fields from `cudaPointerAttributes` (3183, thanks leofang!)
Documentation
- Update installation guide for conda-forge (3052, thanks leofang!)
- Include `UnownedMemory` in the API docs (3086, thanks jakirkham!)
- Fix gencode example in the doc (3147, thanks leofang!)
- Document `convolve` and `correlate` (3161, thanks jakirkham!)
Examples
- Add mpi4py examples (3049, thanks leofang!)
Tests
- Added a compute capability check for testing grid sync (3051)
- Fix tolerance of fft tests (3056)
- Skip `irfft` tests for compute capability != 7 (3084)
- Rewrite tests not to use `numpy_cupy_raises` cupyx.* tests (3099)
- Rewrite manipulation tests not to use `numpy_cupy_raises` (3122)
- Remove python 2.7 builds (3162)
Others
- Add copyright notice for Random Kit (3107)
- Bump version to v8.0.0b1 (3204)