【问题标题】:Running on multiple cores using MPI使用 MPI 在多核上运行
【发布时间】:2011-08-28 23:37:51
【问题描述】:

我使用当前命令提交 MPI 作业:mpirun -np no.of processor filename

我的理解是,上面的命令让我提交给 4 个通过 MPI 通信的独立处理器。但是,在我们的设置中,每个处理器都有 4 个未使用的内核 . 我的问题如下:

  1. 是否可以从 MPI 运行命令行提交作业以在同一节点或多个节点上的多个内核上运行?如果有怎么办?

  2. 以上是否需要在代码中设置任何特殊的 cmets/set?我确实从阅读一些文献中了解到内核之间的通信时间可能与处理器之间的通信时间不同,因此确实需要考虑问题是如何分布的……但是对于那个问题呢?还需要估算什么?

  3. 最后,传输的数据量是否有限制?总线可以发送/接收多少数据有限制吗?缓存有限制吗?

谢谢!

【问题讨论】:

    标签: c++ mpi cpu-cores


    【解决方案1】:

    所以 1 是关于启动流程的问题,而 2+3 基本上是关于性能调整的问题。性能调优可能涉及对底层代码的大量工作,但您不需要修改一行代码来执行任何操作。

    我从您的第一个问题中了解到,您想修改已启动的 MPI 进程的分布。这样做必然超出标准,因为它依赖于操作系统和平台;所以每个 MPI 实现都会有不同的方法来做到这一点。最新版本的 OpenMPIMPICH2 允许您指定处理器的最终位置,因此您可以为每个插槽指定两个处理器,等等。

    您无需修改​​代码即可使其正常工作,但存在性能问题,具体取决于核心发行版。一般来说,这很难说太多,因为它取决于您的通信模式,但是是的,处理器“越近”,通信速度就会越快,总的来说。

    对于在 MPI 任务之间来回传输的数据总量没有指定限制,但是有带宽限制(并且每条消息都有限制)。缓存大小是任意大小。

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 2016-01-09
      • 2012-03-26
      • 2015-06-03
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多