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.
(*) 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.
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"
}
CuPy : NumPy & SciPy for GPU
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.
CuPy also provides access to low-level CUDA features. You can pass
ndarrayto 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.
pip install cupy-cuda102pip install cupy-cuda102 -f https://pip.cupy.dev/aarch64pip install cupy-cuda110pip install cupy-cuda111pip install cupy-cuda11xpip install cupy-cuda11x -f https://pip.cupy.dev/aarch64pip install cupy-cuda12xpip install cupy-cuda12x -f https://pip.cupy.dev/aarch64pip install cupy-rocm-4-3pip install cupy-rocm-5-0(*) ROCm support is an experimental feature. Refer to the docs for details.
Append
--pre -f https://pip.cupy.dev/preoptions 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.
More information
License
MIT License (see
LICENSEfile).CuPy is designed based on NumPy’s API and SciPy’s API (see
docs/LICENSE_THIRD_PARTYfile).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]