1

假设我使用以下配置运行 slurm 作业:

   #!/bin/bash

    #SBATCH --nodes=1                                # set the number of nodes
    #SBATCH --ntasks=1                               # Run a single task    
    #SBATCH --cpus-per-task=4                       # Number of CPU cores per task
    #SBATCH --time=26:59:00                          # set max wallclock time 
    #SBATCH --mem=16000M                             # set memory limit per node

    #SBATCH --job-name=myjobname                 # set name of job
    #SBATCH --mail-type=ALL                          # mail alert at start, end and abortion of execution
    #SBATCH --mail-user=sb@sw.com              # send mail to this address
    #SBATCH --output=/path/to/output/%x-%j.out  # set output path

    echo ' mem: ' $SLURM_MEM 
    echo '\n nodes: ' $SLURM_NODES
    echo '\n ntasks: ' $SLURM_NTASKS
    echo '\n cpus: ' $SLURM_CPUS_PER_TASK
    echo '\n time: ' $SLURM_TIME

我想保存此作业的配置,例如“时间、内存、任务数”,因此在作业完成后我知道作业是在什么配置下执行的。

所以我决定在输出文件中打印这些变量,但是输出中没有时间和内存:

\n nodes:
\n ntasks:  1
\n cpus:  1
\n time:

有谁知道更好的方法?或者如何参考时间和记忆?

4

1 回答 1

1

您可以使用scontrol show job <job_id>. 这将为您提供所需的其他内存。但是,这不会为您提供实际的内存使用情况。为此,您将需要使用sacct -l -j <job_id>.

因此,在提交脚本的末尾,您可以添加

scontrol show job $SLURM_JOB_ID
sacct -l -j $SLURM_JOB_ID

有许多选项可以选择sacct命令的输出,请参阅手册页以获取完整列表。

于 2018-02-19T06:57:23.377 回答