我正在使用不支持 GPUDirect 的 GPU 集群。从这个简报中可以看出,在跨节点传输 GPU 数据时会执行以下操作:
- GPU 写入固定的 sysmem1
- CPU 从 sysmem1 复制到 sysmem2
- 从 sysmem2 复制 Infiniband 驱动程序
现在我不确定当我使用 MPI 跨 Infiniband 传输 sysmem1 时第二步是否是隐式步骤。通过假设这一点,我当前的编程模型是这样的:
- cudaMemcpy(hostmem, devicemem, size, cudaMemcpyDeviceToHost)。
- MPI_Send(hostmem,...)
我的上述假设是否正确,我的编程模型是否可以正常工作而不会导致通信问题?