Networking MPI集体呼叫与MPI单边通信对其网络带宽使用的影响

Networking MPI集体呼叫与MPI单边通信对其网络带宽使用的影响,networking,mpi,Networking,Mpi,我的应用程序执行一对一单边通信(每台机器都与所有其他机器进行活动通信) 我观察到网络带宽的性能瓶颈,并考虑到如果可以减少带宽使用,将通信的某些部分转移到集体呼叫 如果我使用MPI集体,而不是单方面的通信呼叫,会怎么样?它能降低总的网络带宽利用率吗?这将取决于MPI的实施;(我在Mellanox Infiniband上使用Intel MPI。) 如果Infiniband的RDMA支持带宽高效的广播或多播功能,MPI将直接从中受益 下面是我当前使用的单边通信的一部分,可以通过定义子组将其更改为MPI

我的应用程序执行一对一单边通信(每台机器都与所有其他机器进行活动通信)

我观察到网络带宽的性能瓶颈,并考虑到如果可以减少带宽使用,将通信的某些部分转移到集体呼叫

如果我使用MPI集体,而不是单方面的通信呼叫,会怎么样?它能降低总的网络带宽利用率吗?这将取决于MPI的实施;(我在Mellanox Infiniband上使用Intel MPI。)

如果Infiniband的RDMA支持带宽高效的广播或多播功能,MPI将直接从中受益

下面是我当前使用的单边通信的一部分,可以通过定义子组将其更改为MPI_BCast

In each process,
For i in [1, ..., k]
  MPI_RGet (buf[i], my_rank + i);

感谢您,Collective并没有减少带宽使用,但他们可以通过例如递归加倍来减少延迟成本。你的信息有多大?你的图案是全是(规则的)还是全是(不规则的)?你知道信息在任何地方都有价值吗?这是FFT、转置还是排序应用程序?我可以给出更详细的更好的答案。@Jeff谢谢,Jeff。[1]. 你能解释一下为什么它不能减少带宽使用吗?(从谷歌我可以像这样提交一些文档;)[2]。一个大数组的某些部分专门分配给每个进程。每个进程都有小的缓冲区,并在其上重复接收和计算(在所有元素上保持滑动)。这不像FFT那样执行密集的洗牌。您是如何确定性能瓶颈的?你有确凿的证据还是仅仅是猜测?在根据猜测进行优化之前,请确保使用first。@Zulan我使用“英特尔MPI跟踪分析器”进行了测量,并分析了我的应用程序在运行时使用的总带宽。超过12GB/秒,接近群集网络带宽的限制。应用程序运行在多少个节点上?网络拓扑是什么?12 GB/s是否适用于特定链接?一对端到端的对等点?我不认为你能得到一个有用的通用答案(技术上杰夫已经给出了)。如果您提供具体细节,特别是迄今为止的性能分析结果,我们可以更好地帮助您。集体不会减少带宽使用,但他们可以通过例如递归加倍来减少延迟成本。你的信息有多大?你的图案是全是(规则的)还是全是(不规则的)?你知道信息在任何地方都有价值吗?这是FFT、转置还是排序应用程序?我可以给出更详细的更好的答案。@Jeff谢谢,Jeff。[1]. 你能解释一下为什么它不能减少带宽使用吗?(从谷歌我可以像这样提交一些文档;)[2]。一个大数组的某些部分专门分配给每个进程。每个进程都有小的缓冲区,并在其上重复接收和计算(在所有元素上保持滑动)。这不像FFT那样执行密集的洗牌。您是如何确定性能瓶颈的?你有确凿的证据还是仅仅是猜测?在根据猜测进行优化之前,请确保使用first。@Zulan我使用“英特尔MPI跟踪分析器”进行了测量,并分析了我的应用程序在运行时使用的总带宽。超过12GB/秒,接近群集网络带宽的限制。应用程序运行在多少个节点上?网络拓扑是什么?12 GB/s是否适用于特定链接?一对端到端的对等点?我不认为你能得到一个有用的通用答案(技术上杰夫已经给出了)。如果您提供具体细节,特别是迄今为止的性能分析结果,我们可以更好地帮助您。