Я очень новичок в Slurm и в распределенных / параллельных вычислениях, поэтому надеюсь, что кто-то сможет пролить свет на мою проблему, но, учитывая, что это может быть просто тупой проблемой, которую нужно решить.
Я настроил кластер, используя 6 подчиненных Pi3 (и 1 мастер), и установил диспетчер рабочей нагрузки Slurm, чтобы помочь с распределением ресурсов и т. Д.
Прежде чем перейти к более сложному коду, я пытаюсь протестировать что-то очень простое. Я посылаю одну и ту же команду всем своим узлам и печатаю имя узла узла.
Мой текущий код (который работает):
srun --nodes=6 hostname
и возвращает:
node01
node05
node04
node02
node06
node03
Теперь я пытаюсь запустить команду того же типа, используя sbatch, со следующим скриптом:
#!/bin/bash
#SBATCH --nodes=6
#SBATCH --partition=partition
#SBATCH --ntasks-per-node=1
cd $SLURM_SUBMIT_DIR
srun printf ‘Hello from: %s\n’ $(hostname) >> out.txt
ожидаю того же результата, что и выше, но вместо этого я получаю:
Hello from: node01
Hello from: node01
Hello from: node01
Hello from: node01
Hello from: node01
Hello from: node01
Я пытался поиграться с переменными env SLURM_NODEID и SLURMD_NODENAME, но все еще не мог заставить его делать то, что я хотел.
Я просто хочу знать, на каком узле выполняется код. Цель состоит в том, чтобы в дальнейшем я мог отслеживать, какие операции и какие узлы выполняются для более сложных сценариев. Может быть, сравнить производительность между узлами, которые, как ожидается, будут "идентичными" Возможно, даже отследить, какие узлы выполняют какую часть параллельного случая?
Большое спасибо !!!!