【问题标题】:MPI in container without MPI on local host本地主机上没有 MPI 的容器中的 MPI
【发布时间】:2020-05-25 20:07:52
【问题描述】:

背景: 我已经在 Singularity 容器中成功创建了基于 MPI 的应用程序,并使用 Singularity 文档推荐的混合模式执行它们。这要求我在容器和主机 O/S 上都安装了“兼容”版本的 MPI。如果我要跨多个节点运行作业,我理解为什么这是必要的。

但在我们的用例中,我们的互连速度很慢,因此我们几乎不可能在多个节点上运行作业。混合模式迫使我跟踪每个容器中内置的每个 MPI 版本,这些容器可能曾经用于确保主机 O/S 上提供正确的 MPI。我首先使用容器的全部原因是为了避免不得不处理这种版本依赖的麻烦。

我的问题: 如果我对 MPI 应用程序只能在单个物理节点内执行的限制感到满意,我有没有办法在不依赖于主机 O/S 上安装任何东西的 Singularity 容器中构建 MPI 应用程序?

【问题讨论】:

  • 如果您使用 SLURM,另一种方法是直接启动(又名srun)而不是mpirun
  • 或者你可以考虑在容器内运行mpirun
  • 谢谢@GillesGouaillardet,我会研究一下 srun——我以前没用过这个。就像我对共享内存或串行作业所做的那样,只是做一个简单的奇点运行,但在容器中使用 mpirun 是行不通的。我收到以下错误:HYDU_create_process (utils/launch/launch.c:75): execvp error on file srun (No such file or directory)
  • 啊,所以也许我有 SLURM 问题?如果我直接登录到一个计算节点并执行奇异运行……那行得通。但是,如果我将相同的行放在脚本中并通过 sbatch 执行它,我会收到上面的错误。所以也许我真的在这里寻求 SLURM 的帮助。
  • 请注意,在 SLURM 脚本中,我检查了路径,甚至完成了“哪个 srun”,并且看起来还不错。因此,在我执行 mpirun 的环境中,srun 肯定是在路径上。

标签: mpi singularity-container


【解决方案1】:

我在 MPI 上不是最强的,但如果您不尝试与其他节点(或由同一计算节点上的其他进程产生的作业)通信,您应该能够使用singularity exec mpi_image.sif mpirun ....

修改奇点定义以使其能够run the image as an instance 也可能很有用。它让singularity 的行为更像Docker,允许你singularity shell 进入一个正在运行的执行环境。这大大简化了在做一些没有很好记录的事情时的调试。

【讨论】:

  • 谢谢大家。我发现这不是奇点问题,而是 slurm/mpi 兼容性问题。
猜你喜欢
  • 2012-03-26
  • 2013-02-10
  • 2014-07-22
  • 2023-03-28
  • 1970-01-01
  • 2013-09-03
  • 2013-03-24
  • 1970-01-01
  • 2012-05-09
相关资源
最近更新 更多