CuPy 是一个基于 CUDA 的 NumPy 替代品,可以在 NVIDIA GPU 上执行高性能的数值计算。
由于其语法与NumPy高度一致,因此可以很简单地将原本NumPy的代码替换为CuPy
本文记录CuPy 的安装、配置和使用方法。
安装和配置
1. 前置要求
硬件要求
软件要求
- CUDA Toolkit:10.2+ (推荐 11.x 或 12.x)
- cuDNN:7.0+ (可选,用于深度学习加速)
2. 检查 GPU 和 CUDA
检查是否有 NVIDIA GPU:
查找 CUDA 安装位置:
1 2 3
| which nvcc nvcc --version
|
3. 安装 CuPy
使用 pip
1 2 3 4 5 6
| pip install cupy-cuda11x
python -c "import cupy; print(cupy.cuda.runtime.getDeviceCount())"
|
使用 Conda
1 2 3 4 5 6 7 8
| conda install -c conda-forge cupy
conda install -c cupy cupy
python -c "import cupy as cp; print(cp.cuda.Device())"
|
4. 验证安装
创建 test_cupy.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import cupy as cp import numpy as np
print(f"GPU 数量: {cp.cuda.runtime.getDeviceCount()}") print(f"当前 GPU: {cp.cuda.get_device_id()}") print(f"GPU 名称: {cp.cuda.Device().get_device_properties()['name'].decode()}")
gpu_mem = cp.cuda.Device().mem_info print(f"总显存: {gpu_mem[0] / 1e9:.2f} GB") print(f"可用显存: {gpu_mem[1] / 1e9:.2f} GB")
a_gpu = cp.array([1, 2, 3, 4, 5]) print(f"GPU 数组: {a_gpu}") print(f"平方和: {cp.sum(a_gpu ** 2)}")
print("\n✓ CuPy 安装成功!")
|
基本使用方法
核心思想就是把np.全部换成cp.基本就可以了
多 GPU 使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import cupy as cp
num_gpus = cp.cuda.runtime.getDeviceCount() print(f"可用 GPU 数: {num_gpus}")
for gpu_id in range(num_gpus): with cp.cuda.Device(gpu_id): arr = cp.random.rand(1000, 1000) result = cp.sum(arr) print(f"GPU {gpu_id}: sum = {result}")
arr_gpu0 = cp.array([1, 2, 3]) with cp.cuda.Device(1): arr_gpu1 = cp.asarray(arr_gpu0)
|
需要注意的问题
✅ 推荐做法:
1 2 3 4 5 6 7 8
| data_gpu = cp.asarray(data_cpu)
result_gpu = apply_operations(data_gpu)
result_cpu = cp.asnumpy(result_gpu)
|
❌ 不推荐做法:
1 2 3 4
| for i in range(1000): data_gpu = cp.asarray(data_cpu[i]) result = cp.asnumpy(cp.sum(data_gpu))
|
相关资源