/cupy

NumPy & SciPy for GPU

Primary LanguagePythonMIT LicenseMIT

CuPy : NumPy & SciPy for GPU

pypi Conda Version GitHub license coveralls Gitter Twitter

Website | Install | Tutorial | Examples | Documentation | API Reference | Forum

CuPy is a NumPy/SciPy-compatible array library for GPU-accelerated computing with Python. CuPy acts as a drop-in replacement to run existing NumPy/SciPy code on NVIDIA CUDA or AMD ROCm platforms.

>>> import cupy as cp
>>> x = cp.arange(6).reshape(2, 3).astype('f')
>>> x
array([[ 0.,  1.,  2.],
       [ 3.,  4.,  5.]], dtype=float32)
>>> x.sum(axis=1)
array([  3.,  12.], dtype=float32)

CuPy also provides access to low-level CUDA features. You can pass ndarray to existing CUDA C/C++ programs via RawKernels, use Streams for performance, or even call CUDA Runtime APIs directly.

Installation

Wheels (precompiled binary packages) are available for Linux and Windows. Choose the right package for your platform.

Platform Architecture Command
CUDA 10.2 x86_64 / aarch64 pip install cupy-cuda102
CUDA 11.0 x86_64 pip install cupy-cuda110
CUDA 11.1 x86_64 pip install cupy-cuda111
CUDA 11.2 ~ 11.8 x86_64 / aarch64 pip install cupy-cuda11x
CUDA 12.x x86_64 / aarch64 pip install cupy-cuda12x
ROCm 4.3 (*) x86_64 pip install cupy-rocm-4-3
ROCm 5.0 (*) x86_64 pip install cupy-rocm-5-0

(*) ROCm support is an experimental feature. Refer to the docs for details.

Append --pre -f https://pip.cupy.dev/pre options to install pre-releases (e.g., pip install cupy-cuda11x --pre -f https://pip.cupy.dev/pre). See the Installation Guide if you are using Conda/Anaconda or building from source.

Run on Docker

Use NVIDIA Container Toolkit to run CuPy image with GPU.

$ docker run --gpus all -it cupy/cupy

More information

License

MIT License (see LICENSE file).

CuPy is designed based on NumPy's API and SciPy's API (see docs/LICENSE_THIRD_PARTY file).

CuPy is being maintained and developed by Preferred Networks Inc. and community contributors.

Reference

Ryosuke Okuta, Yuya Unno, Daisuke Nishino, Shohei Hido and Crissman Loomis. CuPy: A NumPy-Compatible Library for NVIDIA GPU Calculations. Proceedings of Workshop on Machine Learning Systems (LearningSys) in The Thirty-first Annual Conference on Neural Information Processing Systems (NIPS), (2017). [PDF]

@inproceedings{cupy_learningsys2017,
  author       = "Okuta, Ryosuke and Unno, Yuya and Nishino, Daisuke and Hido, Shohei and Loomis, Crissman",
  title        = "CuPy: A NumPy-Compatible Library for NVIDIA GPU Calculations",
  booktitle    = "Proceedings of Workshop on Machine Learning Systems (LearningSys) in The Thirty-first Annual Conference on Neural Information Processing Systems (NIPS)",
  year         = "2017",
  url          = "http://learningsys.org/nips17/assets/papers/paper_16.pdf"
}