0

我有一个.slurm可以在 Linux GPU 集群中运行的文件。该文件是这样的:

#!/bin/bash
#SBATCH -o ./myrepo/output.log
#SBATCH -J jobname
#SBATCH --gres=gpu:V100:1
#SBATCH -c 5
source /home/LAB/anaconda3/etc/profile.d/conda.sh
conda activate cuda9.1
CUDA_VISIBLE_DEVICES=0 python train.py

现在我想在日志路径中添加一个文件夹。也许我会看起来像:

#!/bin/bash
#SBATCH -o ./myrepo/**currenttime**/output.log
#SBATCH -J jobname
#SBATCH --gres=gpu:V100:1
#SBATCH -c 5
source /home/LAB/anaconda3/etc/profile.d/conda.sh
conda activate cuda9.1
CUDA_VISIBLE_DEVICES=0 python train.py

我努力了:

#!/bin/bash
time=`date +%Y%m%d-%H%M%S`
#SBATCH -o ./myrepo/${time}/output.log
#SBATCH -J jobname
#SBATCH --gres=gpu:V100:1
#SBATCH -c 5
source /home/LAB/anaconda3/etc/profile.d/conda.sh
conda activate cuda9.1
CUDA_VISIBLE_DEVICES=0 python train.py

但是失败了。好像#SBATCH应该在旁边#!/bin/bash

跟随一个成功,但有了它我一次不能运行超过一项工作。

#!/bin/bash
#SBATCH -o ./myrepo/output.log
#SBATCH -J jobname
#SBATCH --gres=gpu:V100:1
#SBATCH -c 5
source /home/LAB/anaconda3/etc/profile.d/conda.sh
conda activate cuda9.1
time=`date +%Y%m%d-%H%M%S`
CUDA_VISIBLE_DEVICES=0 python train.py
cp ./myrepo/output.log ./myrepo/${time}/output.log

我怎么解决这个问题?

4

1 回答 1

0

这个对我有用。

#!/bin/bash
#SBATCH -o ./myrepo/output_%j.log
#SBATCH -J jobname
#SBATCH --gres=gpu:V100:1
#SBATCH -c 5
time=`date +%Y%m%d-%H%M%S`
mkdir ./myrepo/${time}
source /home/LAB/anaconda3/etc/profile.d/conda.sh
conda activate cuda9.1
CUDA_VISIBLE_DEVICES=0 python train.py
mv ./myrepo/output_$SLURM_JOB_ID.log ./myrepo/${time}/output.log

#SBATCH -o ./myrepo/output_%j.log表示你的输出文件是以 命名的output_jobid.log,在 SBATCH 中你可以用它%j来替换 jobid。但是在 bash 中,您必须使用$SLURM_JOB_ID,最后一行是将日志移动到文件夹中(当前时间)。通过这种方式,您可以运行多个作业,并且结果位于不同的文件夹中。

于 2019-08-28T08:00:35.617 回答