入门指南#
简介#
cudaMalloc()
、cudaFree()
、cudaMemcpy()
和 cudaMemcpyAsync()
)在 GPU 内存和 CPU 内存之间复制数据。硬件和软件要求#
GPU 架构 |
Volta ( |
CUDA |
12.1.1 及以上 |
CPU 架构 |
x86_64, arm64-sbsa |
操作系统 |
Linux |
所需软件包
CUDA Toolkit 12.1.1 及以上 (https://developer.nvidia.com/cuda-downloads)
HPC-X v2.16 及以上 (https://developer.nvidia.com/networking/hpc-x) - 包含满足 cuSOLVERMp 要求的 OpenUCC 和 OpenUCX。
NCCL v2.16 及以上 (https://developer.nvidia.com/nccl) - 为了获得良好的性能是必需的。
CAL (https://developer.download.nvidia.com/compute/cublasmp/redist/libcal) - 用于通信的配套库。
推荐软件包
OpenUCX v1.10+ (openucx/ucx) 和 OpenUCC v1.1+ (openucx/ucc) - HPC-X 的替代方案,您可以手动安装 OpenUCX 和 OpenUCC。两者都需要配置 CUDA 支持
GDRCopy v2.0+ (NVIDIA/gdrcopy) 和 nv_peer_mem (Mellanox/nv_peer_memory) - 允许底层通信软件包使用 GPUDirect RDMA。如果您自己安装 OpenUCX - 它应该配置为支持 GDRCopy。
Mellanox OFED (https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed) - NVIDIA Infiniband 适配器驱动程序 (https://www.nvidia.com/en-us/networking/products/infiniband)。如果您自己安装 OpenUCX - 它应该配置为支持 IB 通信。
同步执行#
本地矩阵的数据布局#
工作流程#
1. 引导 CAL 通信器:cal_comm_create()。2. 初始化库句柄:cusolverMpCreate()。3. 初始化网格描述符:cusolverMpCreateDeviceGrid()。4. 初始化矩阵描述符:cusolverMpCreateMatrixDesc()。5. 查询给定例程的主机和设备缓冲区大小。6. 为给定例程分配主机和设备工作区缓冲区。6. 执行例程以执行所需的计算。7. 同步本地流以确保结果可用(如果需要):cal_stream_sync()。8. 释放主机和设备工作区。9. 销毁矩阵描述符:cusolverMpDestroyMatrixDesc()。10. 销毁网格描述符:cusolverMpDestroyGrid()。11. 销毁 cuSOLVERMp 库句柄:cusolverMpDestroy()。12. 销毁 CAL 库句柄:cal_comm_destroy()。