我想进入一个具有奇点的容器,然后运行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命令?我对使用sbatch
特别感兴趣。使用srun然后进入容器是作弊而不是我想要的。
答案 0 :(得分: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部分中的任何内容。