与单进程多 GPU API 的显着差异

以下是单进程多 GPU cuFFT 和 cuFFTMp 在需求和 API 使用方面的一些显着差异。

单进程,多 GPU

多进程 (cuFFTMp)

cufftXtSetGPUs

必需

不允许

cufftMpAttachComm

不允许

必需

cufftXtMemcpy (...,CUFFT_COPY_HOST_TO_DEVICE)

将整个数组从 CPU 复制到多个 GPU(以自然顺序或置换顺序)

将本地分布式数组从 CPU 复制到 GPU,无需重新分配。

cufftXtMemcpy (...,CUFFT_COPY_DEVICE_TO_HOST)

将整个数组从多个 GPU 复制到 CPU(始终以自然顺序)

将本地分布式数组从 GPU 复制到 CPU,无需重新分配。

cufftXtMemcpy (...,CUFFT_COPY_DEVICE_TO_DEVICE)

在 GPU 之间重新分配数据,从自然顺序到置换顺序,或从置换顺序到自然顺序

在 GPU 之间重新分配数据,从自然顺序到置换顺序,或从置换顺序到自然顺序(使用 cufft XtSetDistribution 时不允许)

单节点互连

无限制

需要点对点

描述符内存

CUDA 可见

NVSHMEM 分配

cufftXtSetDistribution

不允许

可选

使用指向 cudaLibXtDesc 的指针 descnGPUs 个 GPU

desc->descriptor-> nGPUs == nGPUs

desc->descriptor-> nGPUs == 1

最小尺寸(使用 nGPUs 个 GPU)

每个维度 32

nGPUs 在前两个维度中,3D 中的最后一个维度为 2。

最大 GPU 数量

16

无限制

批量转换

支持(但各个批次不跨 GPU 分布)

不支持