Я пытался использовать несколько узлов в моем сценарии PBS для выполнения нескольких независимых заданий. Предполагается, что каждое отдельное задание использует 8 ядер, а каждый узел в кластере имеет 32 ядра. Итак, я хотел бы, чтобы каждый узел выполнял по 4 задания. Мой сценарий PBS выглядит следующим образом.
#!/usr/bin/env bash
#PBS -l nodes=2:ppn=32
#PBS -l mem=128gb
#PBS -l walltime=01:00:00
#PBS -j oe
#PBS -V
#PBS -l gres=ccm
sort -u $PBS_NODEFILE > nodelist.dat
#cat ${PBS_NODEFILE} > nodelist.dat
export JOBS_PER_NODE=4
PARALLEL="parallel -j $JOBS_PER_NODE --sshloginfile nodelist.dat --wd $PBS_O_WORKDIR"
$PARALLEL -a input_files.dat sh test.sh {}
input_files.dat
содержит названия файлов заданий. Я успешно использовал этот сценарий для выполнения параллельных заданий на одном узле (в этом случае я удаляю из сценария --sshloginfile nodelist.dat
и sort -u $PBS_NODEFILE > nodelist.dat
). Однако всякий раз, когда я пытаюсь запустить этот сценарий на более чем одном узле, я получаю следующую ошибку. ssh: connect to host 922 port 22: Invalid argument
ssh: connect to host 901 port 22: Invalid argument
ssh: connect to host 922 port 22: Invalid argument
ssh: connect to host 901 port 22: Invalid argument
Здесь 922
и 901
- числа, соответствующие назначенные узлы и включены в файл nodelist.dat ($PBS_NODEFILE)
.
Я попытался найти эту проблему, но не смог найти много, так как все остальные, похоже, справляются с аргументом --sshloginfile
, поэтому я не уверен, относится ли это к конкретной системе проблема.
Редактировать:
Как упомянул @Ole Tange в своем ответе и комментариях, мне нужно изменить «номер узла», созданный $ PBS_NODEFILE, что я делаю следующим образом внутри сценария PBS.
# provides a unique number (say, 900) associated with the node.
sort -u $PBS_NODEFILE > nodelist.dat
# changes the contents of the nodelist.dat from "900" to "[email protected]"
sed -i -r "s/([0-9]+)/username@w-\1.cluster.uni.edu/g" nodelist.dat
Я проверил, что nodelist.dat
содержит только одну строку, а именно [email protected]
.
Редактировать-2:
Похоже, что за ошибку, которую я получаю, ответственна архитектура кластера. Я запустил тот же сценарий в другом кластере (скажем, cluster_2), и он завершился без ошибок. По словам моего системного администратора, причина, по которой он работает на cluster_2, заключается в следующем: «cluster_2 - это отдельная машина. Как только ваше задание начинается, вы фактически находитесь на головном узле вашего задания PBS, как и следовало ожидать».
nodelist.dat
, чтобы получить полезный ответ. Ваш вопрос не соответствует MCVE, поэтому вам нужно будет предоставить как можно больше реальных доказательств. - person Ole Tange   schedule 19.01.2019