【问题标题】:MPI fortran code on top of another one另一个之上的 MPI fortran 代码
【发布时间】:2014-03-02 02:35:53
【问题描述】:

我编写了一个 MPI fortran 程序,我需要运行多次(为了保持一致性,让我们将此程序称为 P1)。我可以用来运行程序的最小核心数是 512。问题是 P1 具有 128 个核心的最佳可扩展性。 我想做的是在 P1 之上创建另一个程序(P2),同时调用 P1 4 次,每次调用将在 128 个内核上..

基本上我需要同时运行 4 个调用实例,进程数等于总处理器数除以 4。

你觉得有可能吗?我的问题是我不知道在哪里搜索可以做到这一点。 我目前正在寻找 MPI 小组和沟通者,我是否正在走上实现目标的好道路?

编辑: 系统调度程序是 Loadleveler。当我提交作业时,我需要指定我需要多少个节点。节点有 16 个核心,我可以使用的最小节点是 32。在批处理中,我们还指定 -np NBCORES,但如果我们这样做,即 -np 128,所消耗的时间就像我们使用 512 个核心一样( 32 个节点),即使作业在 128 个内核上运行..

【问题讨论】:

  • 512 是给定程序的最小值,还是并行环境的最小值?
  • 我确信这是可能的,尽管有一定的难度。在您开始那段旅程之前,启动 4 个程序实例的脚本有什么问题?我猜你的程序的 4 个运行实例之间不需要通信,所以不相信你需要内部或内部或任何通信器。
  • 听起来您在 Blue Gene/Q 系统上运行(节点板上 32 个节点 x 每个节点 ASIC 16 个内核)。如果允许子块 MPI 作业,您可以使用 runjob 的 --block/--corner/--shape 机制将 4 个 MPI 作业放在块的 4 个角落。这样做可能是特定于站点的。有关如何在 Cineca 的 FERMI 系统上完成此操作的示例,请参阅 here。
  • 高性能标记:使用您所说的脚本,它将在 512 个内核上依次运行程序的 4 个实例。实际上,这 4 个实例之间没有通信。我只能做一个 mpirun -np 512。 Hristo Iliev :谢谢你的回答,如果我能做到你说的,我会努力的。非常感谢您的回答。我会与您保持联系。
  • Francescalus : 512 用于并行环境,我认为。我可以指定使用 128 个内核运行,但它们会像我使用 512 个内核计算一样向我收费。

标签: fortran mpi


【解决方案1】:

多亏了你的回答,我才能做到。 正如我稍后提到的(对不起),调度程序是 Loadlever, 如果您有权访问子块模块,请遵循以下内容:http://www.hpc.cineca.it/content/batch-scheduler-loadleveler-0#sub-block,正如 Hristo Iliev 所提到的。 如果你不这样做,你可以做一个多步骤的工作,步骤之间没有依赖关系,所以它们将同时执行。这是一个经典的多步骤作业,您只需删除所有 @dependency 标志(在 Loadleveler 的情况下)。

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 2012-10-09
    • 2011-08-04
    • 2012-01-24
    • 2018-05-05
    • 2012-08-10
    • 1970-01-01
    • 2013-02-12
    相关资源
    最近更新 更多