передавая строковый аргумент, чтобы назвать работу в SLURM - PullRequest
1 голос
/ 02 ноября 2019

Я хочу передать параметр в виде bash-скрипта в кластере, чтобы назвать работу. Я попробовал это:

#!/bin/bash
#SBATCH -J "$1" #<--- to name the job with the first parameter
#SBATCH --partition=shortq
#SBATCH -o %x-%j.out
#SBATCH -e %x-%j.err


echo "this is a test job named" $1
Gate main.mac

Когда я запускаю задание с

sbatch my_script.sh  test_sript

, я получаю файл с именем $ 1-23472.out. Похоже, что «1 доллар» не был истолкован. Как я могу получить файл с именем "test_script-23472.out"?

Также обязательна ли строка Gate main.mac? Может кто-нибудь объяснить мне, почему мы должны поставить это?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 13 ноября 2019

Вы, вероятно, не можете сделать это в точности так, как хотите, но вот решение, которое очень близко подходит к этому:

Пакетный скрипт:

#!/bin/bash
#SBATCH --partition=shortq
#SBATCH -o %x-%j.out
#SBATCH -e %x-%j.err


echo "this is a test job named" $SLURM_JOB_NAME
(rest of your script here)

Отправить с помощью:

$ sbatch -J jobname my_script.sh
0 голосов
/ 05 ноября 2019

Slurm не будет интерпретировать переменную Bash в комментариях. Bash либо, так как это в комментарии.

Одним из решений является такая конструкция для отправки:

ARG="<something>" sbatch -J "$ARG" my_script.sh  test_sript "$ARG"

Что касается строки Gate main.mac, она используется для запуска программы Gate с main.mac в качестве аргумента.

...