This is the release note of v8.0.0b1. See here 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-cuda80wheel 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. Usecupyx.scatter_addinstead.
New Features
- Add
get_global()tocupy.RawModule(#2510, thanks @leofang!) - Support multi-GPU in
cupy.cuda.cufft.Plan1d(#2644, thanks @leofang!) - Add
hstack,vstack, andbmattocupyx.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_notas alias toinvert(#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
ndarrayvariants AND inplace support infallback_mode(#2391, thanks @Piyush-555!) - Support array-like start/stop and add
axisargument tolinspace(#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_allocatorincupy.cuda(#2951, thanks @jakirkham!) - Remove
__future__imports (#2995) - Support CUB
prod(#3067, thanks @leofang!) - Remove deprecated
cupy.scatter_add(#3074) - Update
cupy.padto usecupy.linspaceinstead ofnumpy.linspaceinternally (#3101, thanks @grlee77!) - Histogram update: support
range,weightsanddensity(#3124, thanks @grlee77!) - Add support for
ord= 2, -2, and 'nuc' incupy.linalg.norm(#3130, thanks @rushabh-v!) - Use
ElementwiseKernelincupy.fill_diagonal(#3139) - Allow
dia_matrixcreation from SciPy equivalent (#3160, thanks @jakirkham!) - Add
labelsin the benchmark and addkwargstorepeat(#3172, thanks @rushabh-v!) - Add
outparameter tocupy.concatenateandcupy.stack(#2983) - Fix
reshapeto raiseValueErrorfor order 'K' (#3123)
Performance Improvements
- Improve cuDNN performance when using deterministic mode (#1380)
- Improve performance of
cumsumandcumprod(#2907) - Improve
ndimageconvolveandcorrelate(#3179) - Add check of
c_contiguouswhen indexingCArray(#3191)
Bug Fixes
- Fix an issue using non-existing attribute in cub.pyx (#2985)
- Use
size_t nbytesin__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.cubwith CUDA < 9.2 (#3089, thanks @leofang!) - Fix
cub_reductionforCUPY_CUB_MINand float16 arrays (#3100) - Use
time.process_timeinstead oftime.clock(#3128, thanks @rushabh-v!) - Add support for 0 sized matrices in
svd(#3140, thanks @rushabh-v!) - Fix CUB-based
cupy.prodfor half precision (#3148, thanks @leofang!) - Fix error type and message in
coo_matrix(#3150) - Allow
MatDescriptorto be pickle-able (#3157, thanks @jakirkham!) - Fix
erfinv&erfcinvincupyx.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
tempdircontext manager (#3003) - Use
intptr_tinstead ofsize_tfor cuSPARSE and cuBLAS handles (#3081, thanks @Harshan01!) - Use
intptr_tfor 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
UnownedMemoryin the API docs (#3086, thanks @jakirkham!) - Fix gencode example in the doc (#3147, thanks @leofang!)
- Document
convolveandcorrelate(#3161, thanks @jakirkham!)
Examples
Tests
- Added a compute capability check for testing grid sync (#3051)
- Fix tolerance of fft tests (#3056)
- Skip
irffttests for compute capability != 7 (#3084) - Rewrite tests not to use
numpy_cupy_raisescupyx.* tests (#3099) - Rewrite manipulation tests not to use
numpy_cupy_raises(#3122) - Remove python 2.7 builds (#3162)