This is a major release of CuPy v2.0.0. All of the updates since the previous major version (v1.0.0) can be found in the release notes below:
- v2.0.0a1 (https://github.com/cupy/cupy/releases/tag/v2.0.0a1)
- v2.0.0b1 (https://github.com/cupy/cupy/releases/tag/v2.0.0b1)
- v2.0.0rc1 (https://github.com/cupy/cupy/releases/tag/v2.0.0rc1)
Important Updates
Supports the latest versions of the following libraries
- CUDA9 support (#353, thanks @anaruse!)
- cuDNN7 support (#362, thanks @anaruse!)
- NCCL2 support (#363, thanks @anaruse!)
- NumPy 1.13 (#347)
In v2.0.0a1
- We started using NVRTC instead of NVCC for kernel compilation. This change enables CuPy to run in 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.
In v2.0.0b1
- Sparse matrix.
cupy.sparseis a module that implementsscipy.sparseAPI using CUDA and cuSPARSE. We now have basic features for using sparse matrices on GPU. - New memory allocator (#168). The memory pool implementation is greatly updated. It is based on best-fit allocation with coalescing. When there are a large number of allocations with different sizes (e.g. NLP applications), the memory usage is improved and the number of re-allocations is reduced (which also reduces the running time).
In v2.0.0rc1
- Complex numbers (#232)
- Many New functions.
Bug fixes
- Fix
cupy.nonzerofor corner cases (#504) - Fix simple reduction for corner cases (#505)
- Fix multithread problem in
PooledMemory(#507) - Resolve dealloc problem and multithread problem in
PinnedMemory(#510) - Avoid using global state in
RandomState.choice(#560) - Fix
broadcastfor corner cases (#577) - Fix
csrmm2to support transa (#601) - Fix
csrmv(#607)
Improvements
- Fix
get_array_moduleto be aware ofspmatrix(#586) - Show NVRTC error code (#538)
- Optimize
RandomState.interval(#585) - Fix
random.normaldouble memory consumption (#592) - Check kernel name validity (#596)
Installation
Documentation
- Fix warnings (#535)
- Add documentation of
cupy.allandcupy.anyfunction (#514) - Fix documentation of fusion functions (#517)
- Treat sphinx warnings as errors (#519)
- Correct URLs in documentation (#561, thanks @aonotas!)
- Fix Cython requirement for documentation build (#566)
Tests
- Fix doctest warnings (#500)
- Use
mock.patchinstead of directly replacing function withMock(#610) - Remove
print()in tests (#509) - Travis fails with Cython 0.27. Use Cython 0.26.1 for a while (#539)
- Add corner test cases for indexing (#576)
- Add unit tests for
csrgemm(#602)
Others
- Avoid duplicate loop index (#520)