4

我想进入一个具有奇点的容器,然后运行 ​​slurm 命令。例如:

singularity shell docker://tensorflow/tensorflow:1.0.0-gpu-py3

然后在其中运行我想要运行我的脚本的脚本:

python tf_test.py

tf_test 的内容是:

import tensorflow as tf
print(tf.random_uniform((3,2)))

我遇到的问题是容器不知道我在 HPC 中或存在 slurm。是否可以在我们进入容器后才运行 slurm 命令?我对使用sbatch. 使用 srun 然后进入容器是作弊,而不是我想要的。

4

1 回答 1

2

不确定您正在运行的版本,但这应该适用于 2.4.x 系列。

您可以在容器中安装 slurm,或者如果它安装在您的集群上,例如:

/apps/sched/slurm/[ver]

您可以使用 -B / --bind 选项绑定挂载它,如下所示:

singularity shell -B /apps/sched/slurm/[ver] -B /etc/slurm

但是,运行时作业不会在容器中。要强制执行此操作,您可以提交执行类似以下内容的运行脚本:

singularity exec docker://tensorflow/tensorflow:1.0.0-gpu-py3 python /path/to/tf_test.py

编辑: 一旦您对运行感到满意,IMO 最好从 Docker 源构建 Singularity 映像。在定义文件中,设置一个 %runscript 部分,如

%runscript
    python "$@"

然后,您可以提交:

/path/to/imagename.img /path/to/tf_test.py

奇点图像可以像应用程序一样运行,默认情况下它将执行 %runscript 部分中的任何内容。

于 2018-03-28T15:27:23.337 回答