SLURM_ARRAY_TASK_ID пуст - PullRequest
       7

SLURM_ARRAY_TASK_ID пуст

0 голосов
/ 09 октября 2018

Я новичок в SLURM и облачных вычислениях.

Я написал скрипт bash, который использует распараллеливание заданий с механизмом массива.Проблема в том, что я пытаюсь использовать переменную окружения SLURM_ARRAY_TASK_ID, доступную в SLURM, чтобы вернуть идентификатор задачи, но эта переменная пуста, и поэтому в арифметических операциях есть ошибки.

Вот код bash.

#!/bin/bash

#SBATCH --job-name=Distributed Raytracing
#SBATCH --time=01:00
#SBATCH --array=0-5

cd ./povray

SF=$((${SLURM_ARRAY_TASK_ID}*10+1))
EF=$((${SLURM_ARRAY_TASK_ID}*10+10))
./povray +A +W100 +H100 +Lshare/povray-3.6/include/ +SF$SF +EF$EF glsbng.ini

А вот и ошибки вывода.

/var/spool/slurm/job01706/slurm_script: line 10: *10+1: syntax error: operand expected (error token is "*10+1")
/var/spool/slurm/job01706/slurm_script: line 11: *10+10: syntax error: operand expected (error token is "*10+10")

Что не так?

Заранее спасибо за ваши ответы.

1 Ответ

0 голосов
/ 09 октября 2018

После нескольких исследований и испытаний я обнаружил, что проблема связана с SLURM.Когда я отправляю скрипт с помощью sbatch, запускается только одно задание с одной задачей вместо одного задания с шестью заданиями, как ожидалось.Таким образом, SLURM_ARRAY_TASK_ID не инициализируется, потому что в работе есть только одна задача.Источником проблемы является первый параметр #SBATCH, поскольку имя, данное заданию, содержит пробел.Из-за этого места я думаю, что SLURM не интерпретирует другие параметры, и поэтому скрипт запускается с параметрами по умолчанию.

Я только что заменил

#SBATCH --job-name=Distributed Raytracing

на

#SBATCH --job-name=DistributedRaytracing

и теперь ошибок нет.

Теперь я спрашиваю, почему SLURM не отображает ошибку при такой ошибке (пробел в названии) и почему другие параметры не отображаются.интерпретировать?

...