This is the release of CuPy v2.0.0a1. See [here](https://github.com/cupy/cupy/milestone/5?closed=1) for the complete list of solved issues and merged PRs.
Release Notes
Important updates
- We start using [NVRTC](http://docs.nvidia.com/cuda/nvrtc/index.html#axzz4lq1anZZ4) instead of NVCC for kernel compilation. This change enables CuPy to run on an environment where CUDA is installed but NVCC is not available. Note that some features depending on Thrust (e.g. sorting functions) cannot be used if NVCC is not available at the installation.
- Many functions for sorting, linear algebra, and others are added
New features
- Use NVRTC instead of NVCC to compile kernels (33, 62)
- Sorting functions
- `cupy.msort` (150)
- `cupy.lexsort` (132)
- `cupy.argsort` (67)
- `cupy.sort` sorting arrays with two or more rank along last axis (186, 187)
- Make `cupy.sort` support arrays with rank two or more. (152)
- Linear algebra functions
- `cupy.linalg.slogdet` (95)
- `cupy.linalg.matrix_rank` (97)
- `cupy.linalg.eigh` and `cupy.linalg.eigvalsh` (46)
- Preliminary features to support sparse matrices
- Note: the sparse matrix itself cannot be used in this version, yet; we are planning to make it usable in the next beta.
- `cupy.sparse.spmatrix`, a base class of sparse matrices (40)
- Add cuSPARSE APIs (39)
- `cupy.mgrid` and `cupy.ogrid` (145, thanks iory!)
- `cupy.random.multinomial` (85)
- `cupy.cumprod` (110, thanks ronekko!)
- Support cuDNN v6 dilated convolution (133, thanks anaruse!)
- Add `total_bytes()`, `free_bytes()`, and `used_bytes()` methods to memory pool (184)
- Support `order` option in `astype` (111) and `copy` (112)
- `cupy.fuse` now does not require parentheses (43)
- Add `ndim` to `CArray` and `CIndexer` (160, 161)
Enhancement
- Improve memory deallocation (174)
- Skip installing thrust support in case nvcc not found in PATH. (91)
- Improve asynchronous host to device copy (123)
- Change the allocation unit size from 256 to 512 (176)
- Workaround to "No supported gcc/g++ host compiler found” error in Ubuntu 17.04 (198)
- Avoid synchronization in `cupy.array` for 0-dim values (157)
- Make `cupy.count_nonzero` return an array instead of `int` to avoid device-to-host synchronization (154)
- Check type in `assert_array_list_equal` (205)
- Improve performance (169, 171, 172, 193, 206)
- Improve testing utility (218, 231)
- Refactor `cupy.atleast_nd` functions (142)
Bug fixes
- Fix `out` argument in fusion (209, 213)
- Fix `cupy.array` on multiple GPU environment (122, 135)
- Fix usages of `copy` argument of `ndarray.astype` (118, 121)
- Make memory pool thread-safe (105, thanks kmaehashi!)
- Fix fusion to reject NumPy arrays (151)
- Fix thread safety of `cupy.random.get_random_state` (77, 78)
Documents
- Fix tutorial (93, thanks hvy!)
- Add links to GitHub source pages (131)
- Fix typo (148, thanks ignisan!)
- Write about advanced indexing support (88, thanks yuyu2172!)
- Remove description about discrepancy with NumPy regarding exponential of boolean arrays, which was resolved in NumPy 1.13.0 (140)
- Add missing documentation of `cupy.cumsum` (90, thanks ronekko!)
- Add documentation of `__getitem__` and `__setitem__` for ndarray (89, thanks yuyu2172!)
- Minor improvement for README and the document (45, 49, 117, 134, 138, 155 thanks ClimbsRocks!, 165, 177, 166)
Examples
- Add SGEMM example (114, 188, thanks yuyu2172!)
- Fix color argument in the k-means example (103)
Tests
- Stabilize `cupy.random.choice` test (98, 104)
- Fix Numpy `VisibleDeprecationWarning` in indexing tests (202)
- Make random tests deterministic (81, 82)
- Retry unit tests of decomposition functions (129)
- Fix bug of histogram in `RandomState.interval` test (175)
Others
- Add SciPy license (196)
- Fix error message in setup script (139)