0

我正在使用不支持 GPUDirect 的 GPU 集群。从这个简报中可以看出,在跨节点传输 GPU 数据时会执行以下操作:

  1. GPU 写入固定的 sysmem1
  2. CPU 从 sysmem1 复制到 sysmem2
  3. 从 sysmem2 复制 Infiniband 驱动程序

现在我不确定当我使用 MPI 跨 Infiniband 传输 sysmem1 时第二步是否是隐式步骤。通过假设这一点,我当前的编程模型是这样的:

  1. cudaMemcpy(hostmem, devicemem, size, cudaMemcpyDeviceToHost)。
  2. MPI_Send(hostmem,...)

我的上述假设是否正确,我的编程模型是否可以正常工作而不会导致通信问题?

4

1 回答 1

3

是的,正如您所描述的,您可以独立使用 CUDA 和 MPI(即不使用 GPUDirect)。

  1. 将数据从设备移动到主机
  2. 使用 MPI 像往常一样传输数据

您可能对此演示文稿感兴趣,该演示文稿解释了 CUDA-aware MPI,并在非​​ cuda MPI 和 CUDA-MPI 的幻灯片 11 上并排给出了示例

于 2013-09-20T18:25:55.857 回答