与单进程多 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
的指针desc
和nGPUs
个 GPU
desc->descriptor-> nGPUs == nGPUs
desc->descriptor-> nGPUs == 1
最小尺寸(使用
nGPUs
个 GPU)每个维度 32
nGPUs
在前两个维度中,3D 中的最后一个维度为 2。最大 GPU 数量
16
无限制
批量转换
支持(但各个批次不跨 GPU 分布)
不支持