【问题标题】:Improve MPI program改进 MPI 程序
【发布时间】:2011-06-28 10:47:24
【问题描述】:

我编写了一个 MPI 程序,似乎运行良好,但我想知道性能。 Master线程需要做10次以上的MPI_Send,worker接收数据10次以上再发送。我想知道它是否会降低性能以及我是否可以将所有内容转移到单个结构中,或者我可以从哪种其他技术中受益。

其他一般问题,一旦 mpi 程序或多或少地工作,最好的优化技术是什么。

【问题讨论】:

  • 优化高度依赖于代码,关于优化的书籍非常多。尝试使用分析器检查较慢的部分,然后在此处发布他们的代码。
  • 谢谢,你能指点我一个好的 mpi 分析器吗?如果是开源的就更好了

标签: optimization struct mpi


【解决方案1】:

通常情况下,发送 1 条大消息比发送 10 条小消息要快。发送消息的时间成本通过考虑延迟(发送空消息需要多长时间,由于函数调用、网络延迟等的开销而非零)和带宽(多少鉴于网络通信已经开始,发送额外字节所需的时间更长)。通过将消息捆绑到一条消息中,您只会产生一次延迟成本,这通常是一种胜利(尽管总有可能提出并非如此的情况)。了解任何特定代码的最佳方法就是尝试。请注意,MPI 数据类型允许您以非常强大的方式描述数据在内存中的布局,因此您几乎可以将其从内存直接传输到网络,而无需将中间副本复制到某个缓冲区(所谓的“编组”)数据)。

至于关于 MPI 的更一般的优化问题 - 在不了解更多信息的情况下,我们所能做的就是给您提供一般性的建议,以致于不是很有用。尽量减少需要完成的通信量;尽可能使用内置的 MPI 工具(集合等),而不是自己实现。

【讨论】:

    【解决方案2】:

    充分了解 MPI 应用程序性能的一种方法是在 SimGrid 平台模拟器中运行它。提供的工具和模型足以获得中档应用程序的真实时序预测(例如,几十万行 C 或 Fortran 代码),并且可以与经过调整的可视化工具相关联,帮助您充分了解正在发生的事情在您的应用程序中,以及您必须考虑的实际性能权衡。

    有关演示,请参阅此截屏视频:https://www.youtube.com/watch?v=NOxFOR_t3xI

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 2015-02-20
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多