This is the release note of v5.0.0b2. See here for the complete list of solved issues and merged PRs.
Highlights
- CuPy now supports DLPack to improve interoperability between frameworks. You can convert between
cupy.ndarrayand DLPack tensor usingarray.toDlpack()andcupy.fromDlpack(tensor). See the documentation for details. - CuPy ndarray now implements
__array_ufunc__protocol to improve interoperability with NumPy. It makes NumPy ufuncs applicable to CuPy ndarrays directly (for example,numpy.exp(cupy.ones(3))will callcupy.expto compute the exponential, and return CuPy ndarray). - CuPy now supports CUDA 9.2 and NumPy 1.14.
- More NumPy/SciPy compatible methods have been implemented:
cupy.linalg.matrix_power,cupy.random.laplace,cupy.corrcoef,cupy.cov,cupy.i0,cupy.sinc,cupyx.scipy.special.*and more. cupy.einsumhas been rewritten to use cuBLAS. This significantly reduces the memory usage and also improves the performance.- Allocation strategy of pinned memory has been improved to reduce host memory usage.
- Fixed bugs in multiple functions with arrays with complex dtypes.
New Features
- Support DLPack (#1082)
- Implement
cupy.corrcoefandcupy.cov(#1110, thanks @tsurumeso!) - Allow more natural fusion notation (#1167)
- Implement special functions (#1233)
- Implement
__array_ufunc__(#1247, thanks @martindurant!) - Improve performance of batch normalization (#1260)
- Add complex dtype to sparse matrix (#1277, thanks @chengts95!)
- Add cuDNN API for tensor operations and reduction (#1319, thanks @kashif!)
- Add distribution
laplace(#1321) - Implement
cupy.linalg.matrix_power(#1374, thanks @ericmjl!)
Enhancements
- Reduce Python function call in
ElementwiseKernel(#725) - Check cuDNN convolution algorithm (#890)
- Remove memory copy in
diagfunction (#1129) - Fix
linalg.matrix_rankcasting for Windows (#1217) - Use cuBLAS in
cupy.einsum(#1218) - Add
divmodfunction tocupynamespace (#1286) - Improve ndarray initializing performance (#1341)
- Fix type of return value of fused function (#1349)
- Support composition of fused functions (#1350)
- Support weak reference to CuPy array (#1355)
- Remove
cupy_stdint.h(#1361) - Round-up pooled memory allocation size with clp2 (#1372)
- Reduce GPU memory usage in (de)convotion (#1381)
- Support
'f'and'c'in theorderoption of ndarray (#1385)
Bug Fixes
- Fix
OutOfMemoryErrorraised even when there are sufficient large freeable chunks (#1256, thanks @hyabe!) - Fix
astypefor complex dtypes (#1279) - Fix
realandimagfor zero-dim arrays (#1280) - Support rounding for complex types (#1282)
- Support
expm1,log1p,log2for complex type (#1283) - Fix unary functions in misc for complex (#1284)
- Fix binary functions in misc to support complex types (#1285)
- Fix view of zerodim ndarray (#1287)
- Catch C++ exceptions from Thrust (#1289)
- Fix
real,imagof non-contiguous complex arrays (#1303) - Fix
rintsyntax error (#1311) - Skip
einsumtest for NumPy versions with broken einsum (#1334) - Fix type of reduction (#1354)
- Fix to accept longer order names (#1393)
Documentation
- Add NumPy 1.14 to supported versions (#1139)
- Update README to encourage use of wheels (#1208)
- Improve sparse docs to show conversion from/to SciPy (#1213)
- Force displaying known methods which are mis-recognized as attributes by Sphinx (#1250)
- Expand reference on differences in zero-dimensional arrays (#1254)
- Fix typo in sparse matrix docs (#1307)
- Split
LICENSEfile (#1325) - Fix typo in profiler docs (#1327)
- Reorganize license file (#1330)
- Fix typos in
zerosandzeros_like(#1357) - Update requirements for v5.0.0b2 / v4.2 release (#1369)
Installation
- Use define macro in
setup.py(#1121) - Support bundling dependent DLLs for Windows wheel support (#1253)
- Remove deprecated
imp.load_sourceinsetup.py(#1329, thanks @vilyaair!) - Add license file to wheel (#1333)