NVIDIA cuPyNumeric 是一个库,旨在为基于 Legate 框架构建的 NumPy 提供分布式和加速的插入式替换。它为多 GPU 和多节点 (MGMN) 加速计算带来了零代码更改扩展。
cuPyNumeric 25.03 是一次里程碑式的更新,为用户和开发者引入了强大的新功能,并增强了可访问性,详情请参阅本文。
全栈现已开源
“借助 cuPyNumeric 25.03,NVIDIA 在 Apache 2 许可证下开源了支持 cuPyNumeric 的 Legate 框架和运行时层。现在,cuPyNumeric 的整个堆栈均在 Apache 2 许可证下提供。此举符合 NVIDIA 对透明度、再现性和协作性的承诺。贡献者现在可以毫无障碍地探索、审核、贡献和扩展系统的任何组件。”
PIP 安装支持
cuPyNumeric 从一开始就支持通过 conda 进行安装。现在,用户也可以使用以下简单命令通过 pip
进行安装:
pip install nvidia-cupynumeric
这可显著简化设置,从而轻松将 cuPyNumeric 集成到您的工作流、虚拟环境和 CI 流水线中。除 MPI 外,所有主要依赖项均可通过 PyPI 捆绑或轻松解析。
与 OpenMPI 和 UCX 一起,PyPI 上的 cuPyNumeric 软件包支持多节点和多秩。它使开发者不仅可以在具有多个 GPU 的单个节点中使用 cuPyNumeric,还可以在多 GPU 多节点集群中使用 cuPyNumeric。
安装示例
以下各节将概述使用 PyPI wheel 包在 SLURM 集群上安装和运行 cuPyNumeric 的示例。
第 1 步:环境设置
登录集群后,加载包括 CUDA 和 MPI 在内的基本环境模块。这些是在多节点或多秩环境中执行 cuPyNumeric 所需的依赖包。如果集群上不可用,请手动安装,或联系系统管理员请求安装。
module purge # clear existing modules
module load cuda # CUDA toolkit
module load openmpi # Open MPI
接下来,创建并激活虚拟环境 (推荐) 。如果您想将软件包安装到当前的 Python 环境中,则无需执行此操作。
python -m venv legate
source legate/bin/activate
第 2 步:安装软件包
使用 pip
安装 cuPyNumeric 和 Legate:
pip install legate nvidia-cupynumeric
第 3 步:运行应用程序
使用 srun
分配交互式 compute nodes:
srun -p partition-name \ # Request a partition
-N 2 \ # 2 compute nodes
--gres=gpu:8 \ # 8 GPU per node
--time=00:30:00 \ # 30-minute time limit
--pty bash # Start interactive shell
然后运行 cuPyNumeric 程序:
legate --gpus 8 \ # GPUs per process
--ranks-per-node 1 \ # Processes per node
--nodes 2 \ # Total nodes (matches -N)
--launcher mpirun \ # launch with MPI
./prog.py
还支持使用 SLURM 批量作业提交运行:
#!/bin/bash
#SBATCH --job-name=cupynumeric
#SBATCH --nodes=2
#SBATCH --gres=gpu:8
#SBATCH --time=00:30:00
module load cuda openmpi
source legate/bin/activate
legate --gpus 8 \
--ranks-per-node 1 \
--nodes ${SLURM_NNODES} \
--launcher mpirun \
./prog.py
有关更多信息,请参阅 cuPyNumeric 25.03 安装指南 。
原生 HDF5 IO 支持
cuPyNumeric 25.03 通过 GPU Direct Storage 原生支持 HDF5,可高效处理大型数据集,并与科学计算环境实现无缝互操作。借助 HDF5,您现在可以使用紧凑、便携、高性能的格式将复杂的数据结构保存到磁盘,并且性能出色。
from legate.core.io.hdf5 import from_file
import cupynumeric as np
x = from_file("data.h5", dataset_name="x")
y = from_file("data.h5", dataset_name="y")
xx = np.asarray(x)
yy = np.asarray(y)
a = 8675.309
yy[:] = a * xx + yy
此功能对于 IO 效率至关重要的高性能计算和数据密集型应用程序尤为有用。
开始使用
NVIDIA cuPyNumeric 25.03 增强了 cuPyNumeric 在研究和生产环境中的基础。 如需了解 25.03 版本中的更多新特性和功能,请参阅版本说明 。团队对不断壮大的社区心存感激,并欢迎您为未来的版本提供反馈、贡献和想法。通过将问题直接提交到 nv-legate/cupynumeric GitHub 存储库,加入对话。