Я новичок в программировании на кластере, и мне очень трудно ориентироваться. Я на SGE с кластером bash и использую OpenMPI.
У меня есть задача, в которой я хочу запустить несколько вариантов моего процесса, где единственная разница заключается в разных конфигурациях в том, что я буду выделять больше ресурсов для своей программы. Возьмите этот пример:
#$ -pe openmpi $process_num
Здесь я выделяю process_num
процессов для среды моей работы. Я хочу, чтобы моя среда изменилась, например: я хочу попробовать 1, 2 и 3 для process_num
, другими словами, у меня есть 3 варианта. Я думал отправить задание sh
, содержащее такой простой цикл, как:
# ... other environment variable definitions
for process_num in 1 2 3
do
# ... some other environment variable definitions
#$ -pe openmpi $process_num
mpirun ./my_prog -npernode 1
done
Другими словами, одно «упакованное» задание будет выполнять все мои варианты и учитывать распределение/масштабирование ресурсов. Я думал, что таким образом я смогу выделить разные ресурсы для всех моих трех вариантов работы с каждой итерацией. Я хочу спросить, возможно ли это сделать, т.е. может ли рабочая среда масштабироваться описанным способом, или мне нужно будет отправить 3 отдельных задания?
Конечно, если ответ да — отправлять отдельные задания, то что произойдет, когда у меня будет около 50 таких конфигураций, которые я хочу попробовать? Каков наилучший подход к отправке 50 (или большого количества) отдельных заданий?
К сожалению, поскольку кластер является общим ресурсом, я не могу экспериментировать так, как хотел бы.
#$ -pe openmpi $process_num
обрабатываетсяqsub
во время отправки задания, в то время как bash, который «заполняет»process_num
, будет выполняться на вычислительном узле. То естьqsub
не имеет никакого смысла в буквальной строке$process_num
. - person liborm   schedule 05.01.2018