2012-12-30 176 views
3

只要学习在由超过100个节点组成的超级计算机上编程,每个节点都由4个Xeon CPU和64GB RAM组成。MPI和集群

我想要做的是将作业分配给每个节点,然后在每个节点上创建本地多线程程序,但我想知道的是,默认情况下,当MPI创建一组进程时, 1在每个任务进程和一个特定的本地节点之间的映射吗?(在我的情况下,它是一个由4个Xeon CPU组成的总共24个核心和64GB RAM的节点)。

+0

你问如果一个进程将浮动节点之间? – Richard

+0

是的,我只希望特定的MPI进程可以在整个生命周期内坚持一个特定节点,但我不确定。 – user0002128

+0

我不知道任何能够跨节点迁移实时进程的广泛使用的MPI实现。进程迁移违背了MPI-3.0规范,允许创建包含可能附加到共享内存块的级别的子通信器(即它们在相同的共享内存系统上运行)。 –

回答

1

MPI将运行在N个节点M个处理,其中M可以大于N.小于,等于,或大于

This site描述的设置。

我找不到直接回答你的问题,但网上有很多网站讨论process migrationcheckpointing。但这些网站的总体主题似乎是,这仍然是一个正在进行的工作。因此,我不希望这会在你的MPI实现中自动发生。

This site讨论MPI_GET_PROCESSOR_NAME命令,该命令可在过程迁移中使用,但指出“没有在MPI需要或限定进程迁移; MPI_GET_PROCESSOR_NAME的这种定义只是允许这样的实现”。使用此命令,您至少可以检查您的代码是否正在主动迁移。

+0

非常感谢,所以我想MPI的工作方式就像操作系统处理线程的方式一样,它可以在运行时为任何特定节点分配进程,无论出于何种原因它都适合。但是最后一件事情是,我认为MPI进程可以占用的最小计算单元是一个节点,这意味着,在任何给定的时间,不会有两个MPI进程占用单个分支节点(通过一个节点可能包含很多CPU)我对吗? – user0002128

+0

从我链接到的第一个站点,我会解释它可能在单个物理节点上运行多个进程。我所使用的所有超级计算机都有作业提交脚本,它们将“每个节点的进程”参数作为输入。另一种方法是每个节点有一个进程,但多个线程;但是,我认为它不适用于后一种方式。 – Richard