我想问你是否可以将全局系统变量传递给#SBATCH标签。
我想做一些类似的事情
批处理文件
#!/bin/bash -l
ARG=64.dat
NODES=4
TASK_PER_NODE=8
NP=$((NODES*TASK_PER_NODE))
#SBATCH -J 'MPI'+'_'+$NODES+'_'+$TASK_PER_NODE
#SBATCH -N $NODES
#SBATCH --ntasks-per-node=$TASK_PER_NODE
Run Code Online (Sandbox Code Playgroud)
这不是工作,所以这就是我问你的原因。
我希望所有作业的输出都打印到同一个输出文件中"o.out",而不覆盖它。
特别是,我希望它能够与作业数组一起使用:
#!/bin/bash
#SBATCH --array=1-3
#SBATCH -J vo_job
#SBATCH -o o.out
#SBATCH -e e.out
Run Code Online (Sandbox Code Playgroud) 尽管 SLURM 在作业提交、运行和排队方面工作得很好,但我遇到了下面的一个小错误。
sudo systemctl status slurmd
Jun 12 10:20:40 noki-System-Product-Name systemd[1]: slurmd.service: Can't open PID file /var/run/slurm-llnl/slurmd.pid (yet?) after start: No such file or directory
sudo systemctl status slurmctld
Jun 12 10:20:40 noki-System-Product-Name systemd[1]: slurmd.service: Can't open PID file /var/run/slurm-llnl/slurmd.pid (yet?) after start: No such file or directory
我按照指南进行了安装
文件:///home/noki/Downloads/Webinar_2_Slurm_II--Ubuntu16.04_and_18.04.pdf
这个问题可能来自slurm.conf文件的所有权?
这是我的 slurm.conf 和 slur*.pid 的所有权
# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page …Run Code Online (Sandbox Code Playgroud) 在修改此源代码时,我收到此错误autoreconf:
$ autoreconf
configure.ac:240: warning: macro 'AM_PATH_GLIB_2_0' not found in library
configure.ac:246: warning: macro 'AM_PATH_GTK_2_0' not found in library
configure.ac:240: error: possibly undefined macro: AM_PATH_GLIB_2_0
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:246: error: possibly undefined macro: AM_PATH_GTK_2_0
autoreconf: /usr/bin/autoconf failed with exit status: 1
Run Code Online (Sandbox Code Playgroud)
中的行configure.ac是:
AM_PATH_GLIB_2_0([2.7.1], [ac_glib_test="yes"], [ac_glib_test="no"], [gthread])
Run Code Online (Sandbox Code Playgroud)
这是我使用的 autoconf/automake 工具版本的问题,还是其他原因?
谢谢。
我在安装了 slurm 的虚拟机上设置了 anaconda,如下所示。
base /root/anaconda3
upload * /root/anaconda3/envs/upload
Run Code Online (Sandbox Code Playgroud)
slurm 中的文件是:
#SBATCH -J vs_slurm_upload
#SBATCH -o ./out/%j_log.out
#SBATCH --ntasks=1
#SBATCH --array=0-14
FILES=(../workdir/*)
pwd
conda info --envs
source activate upload
Run Code Online (Sandbox Code Playgroud)
但是,与我设置的Anaconda设置不同,没有上传虚拟环境。
结果如下:
base /root/anaconda3
Run Code Online (Sandbox Code Playgroud)
为了在slurm中设置虚拟环境,我是否需要设置docker而不是在我的VM中设置它?
我还不太明白slurm。
感谢你的回复。
我正在使用 slurm 运行多个数组作业。对于给定的数组作业 ID(假设为 885881),我想列出失败作业和已完成作业的计数。像这样的东西:
输入:
<some-command> -j 885881
Run Code Online (Sandbox Code Playgroud)
输出:假设数组中有 200 个作业。
count | status
120 | failed
80 | completed
Run Code Online (Sandbox Code Playgroud)
其次,如果我能够获得任务失败的唯一原因列表,那就太好了。
输入:
`<some-command> -j 885881`
Run Code Online (Sandbox Code Playgroud)
输出:
count | reason
80 | OUT_OF_MEMORY
40 | TIMED_OUT
Run Code Online (Sandbox Code Playgroud)
我相信sacct可以利用命令以某种方式获得这些结果,但不确定如何实现。
#!/bin/bash
#SBATCH -N 1 # nodes requested
#SBATCH -n 1 # tasks requested
#SBATCH -c 4 # cores requested
#SBATCH --mem=10 # memory in Mb
#SBATCH -o outfile # send stdout to outfile
#SBATCH -e errfile # send stderr to errfile
#SBATCH -t 0:01:00 # time requested in hour:minute:second
module load anaconda
python hello.py jobid
Run Code Online (Sandbox Code Playgroud)
假设我有这段代码,我想将 jobid 发送到 python,你如何获取 job id,所以当我这样做时
sbatch script.sh
Submitted batch job 10514
Run Code Online (Sandbox Code Playgroud)
如何获取数字 10514 并将其传递给 python?
我正在运行一个作业 test.sh,其工作时间不能超过 24 小时。由于模拟将花费超过 10 天的时间,我希望每次达到挂壁时间限制时自动重新启动它。我只需要让它每次提交相同的 test.sh 脚本。
我试过
jobid=$(sbatch --parsable test.sh)
scontrol 更新 jobid $jobid dependency=after:$jobid
但 scontrol update jobid $jobid 中的 $jobid 应该是一个新作业。你有什么建议吗?这可能不是实现它的方法..
感谢您的帮助!
SLURM的默认输出为:JOBID分区名称用户ST时间节点NODELIST(原因)
我也希望它也具有QOS:JOBID分区名称用户ST TIME NODES NODELIST(REASON)QOS
有没有办法更改默认值,所以我不必每次都指定选项?
Slurm上的以下两个并行化方案有什么区别?
方案1
跑 sbatch script.sh
#!/bin/bash
#SBATCH --ntasks=8
## more options
srun echo hello
Run Code Online (Sandbox Code Playgroud)
这会召唤8个正在运行的工作 echo hello
方案2 我已经使用数组作业完成了类似的工作。
#!/bin/bash
#SBATCH --job-name=arrayJob
#SBATCH --output=arrayJob_%A_%a.out
#SBATCH --error=arrayJob_%A_%a.err
#SBATCH --array=1-8
#SBATCH --time=01:00:00
#SBATCH --ntasks=1
# Print this sub-job's task ID
echo hello
Run Code Online (Sandbox Code Playgroud)
两种方案之间有什么区别吗?他们俩似乎都完成了同一件事。