cuda - 我可以使用 cudaMemcpyPeer 在 MPI 分配的不同 GPU 之间传输数据吗?
问题描述
我使用mpi生成多个进程,每个进程对应一个gpu设备。我之前用MPI_Send传输数据,但是速度太慢了。
发现使用cudaMemcpyPeer的传输速度非常快,但是不知道在MPI环境下是否可以使用cudaMemcpyPeer或者cudaMemcpyPeerAsync传输数据。
解决方案
这种情况的解决方案是使用 CUDA-aware MPI。它是理解 CUDA 用法的特殊 MPI 版本。特别是,它允许您在 MPI_Send、MPI_Recv 和 MPI_SendRecv 等调用中使用 CUDA 设备指针作为缓冲区指针,并将使用 CUDA 提供的最快的方法(例如,在同一台机器上的 2 个 GPU 之间的对等传输,如果可能的话) 进行数据移动。
各种 MPI 发行版,如OpenMPI和MVAPICH都有支持 CUDA 的版本。
您可以通过阅读此博客找到有关它的更多信息。您还可以在标签上找到有关它的问题,cuda
例如这个。
推荐阅读
- javascript - 如何让机器人在不带'\_poll'的情况下发送投票消息,以获取带有discord.js的adv poll命令
- python - 如何计算两个 ISO 日期之间的周数
- python - 如何在python中创建数据结构二进制文件?
- python - 如何将文件输出格式化为特定数量的数据列?
- excel - VBA:SelectAll之后的选择焦点
- php - Laravel 6 - 将参数传递给 $app->when()->needs()->give()
- python - SQLAlchemy+PostgreSQL 更新不起作用
- google-sheets - 谷歌表格的问题:一个单元格计算错误的时间平均值
- python - 无法让并行处理在 python 中工作
- python-3.x - 把括号放在数字之间