如何在 EC2 实例上的 docker 中使用 AWS sbatch (SLURM)?

问题描述

我正在尝试让 OpenFOAM 在使用 AWS parallelCluster 的 AWS EC2 集群上运行。

一种可能性是编译 OpenFOAM。另一种方法是使用 docker 容器。我正在尝试使用第二个选项。

但是,我在理解如何编排各种操作时遇到了麻烦。基本上我需要的是:

  1. 将 OpenFOAM 案例从 S3 复制到主节点上的 FSx 文件系统
  2. 运行包含 OpenFOAM 的 docker 容器
  3. 执行 OpenFOAM 操作,其中一些操作使用集群(并行运行计算是最重要的操作)

我想将所有这些都放入脚本中以使其可重现。但我想知道我应该如何将脚本组合在一起才能让 SLURM 处理并行的事情。

我目前的问题是主节点 shell 知道命令,例如sbatch 但是当我启动 docker 以访问 OpenFOAM 命令时,它“忘记”了 sbatch 命令。

如何轻松地将所有 SLURM 相关命令(sbatch,...)导出到 docker?这是处理问题的正确方法吗?

感谢支持

解决方法

对于第一个选项,有一个研讨会可以引导您完成: cfd-on-pcluster

对于第二个选项;我创建了一个使用 HPC 容器运行时 containers-on-pcluster 的容器研讨会。

我加入了一个关于 GROMACS 的部分,但我也很高兴加入 OpenFOAM。我正在使用 Spack 创建容器映像。虽然我只记录了单节点运行,但我们当然可以添加多节点运行。

通过 sbatch 运行 Docker 不会让你走得很远,b/c docker 不是用户端运行时。如需更多信息:FOSDEM21 Talk about Containers in HPC

干杯
Christian(完全披露:AWS Developer Advocate HPC/Batch)