【发布时间】: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 个内核计算一样向我收费。