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 存儲庫,加入對話。
?