Vue d'ensemble

CuPy 10.0, publié le 20 janvier 2022, ajoute le support de Python 3.10 et CUDA 11 pour le calcul GPU accéléré.

Fonctionnalités principales

Support Python 3.10 et CUDA 11

CuPy 10.0 est compatible avec Python 3.10 et CUDA 11, permettant d'utiliser les dernières fonctionnalités des GPU NVIDIA avec un code Python moderne.

python
import cupy as cp

# Création de tableaux sur GPU
a = cp.random.randn(1000, 1000)
b = cp.random.randn(1000, 1000)

# Multiplication matricielle sur GPU
c = a @ b
print(c.shape)  # (1000, 1000)
print(type(c))  # <class 'cupy.ndarray'>

Noyaux personnalisés

CuPy permet de définir des noyaux CUDA personnalisés directement en Python avec RawKernel, offrant un contrôle fin sur le calcul GPU.

python
import cupy as cp

# Noyau CUDA personnalisé
add_kernel = cp.RawKernel(r'''
extern "C" __global__
void add(const float* x, const float* y, float* z, int n) {
    int tid = blockDim.x * blockIdx.x + threadIdx.x;
    if (tid < n) z[tid] = x[tid] + y[tid];
}
''', 'add')

n = 1024
x = cp.random.randn(n, dtype=cp.float32)
y = cp.random.randn(n, dtype=cp.float32)
z = cp.empty(n, dtype=cp.float32)
add_kernel((n // 256,), (256,), (x, y, z, n))

Sources