Как я могу запустить несколько независимых заданий, используя один скрипт bash? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть несколько независимых заданий, которые я хочу запустить одновременно на узле компьютера.

Я хочу запускать каждое задание, используя только одно ядро ​​запрошенного узла. Как я могу написать bash-скрипт для этого?

Это скрипт bash, который я написал, но не работал

#!/bin/bash
#SBATCH --job-name=20
#SBATCH --partition=the_partition
#SBATCH --nodes=1
#SBATCH --ntasks=20
for n in {1..20};
do
cd "dictionary$n"
./ the job
done 

Как я могу изменить скрипт для одновременного запуска 20 независимых заданий?

1 Ответ

0 голосов
/ 19 ноября 2018

Самое простое решение - с массивом заданий:

#!/bin/bash
#SBATCH --job-name=20
#SBATCH --partition=the_partition
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --array=1-20
cd "dictionary$SLURM_ARRAY_TASK_ID"
./ the job

Приведенный выше скрипт создаст массив заданий с 20 заданиями, и каждое задание будет cd помещаться в каталог на основе переменной $SLURM_ARRAY_TASK_ID, которая будет принимать различное значение от 1 до 20 для каждого задания в массиве.

...