Вы можете просто сделайте это с круговым перебором srun
(что-то вроде):
jobs=({1..4})
nodes=($(scontrol show hostname $SLURM_NODELIST))
for ((n = 0; n < ${#jobs[@]}; n++)); do
index=$(expr $n % ${#nodes[@]})
srun --nodes=1 --ntasks=1 --nodelist=${nodes[$index]} \
--exclusive ./myscript --input infile.txt \
--setting $n --output out$n &
done
wait
Я предполагаю, что --cpus-per-task=2
будет передано srun
. Дайте мне знать, если у вас есть какие-либо проблемы. Сегодня утром я возился с параллелью, но я не вижу, как решить эту проблему напрямую. Кроме того, я обнаружил, что если вы сканируете
задание, содержащее параллельные задания GNU, работающие процессы не умирают, если только вы не используете srun
.
То, что вы спрашиваете, противоречиво. Чтобы запустить git checkout
в репо, пользователю необходим доступ на запись к папке .git
.
Вы можете отслеживать свой проект на один уровень выше корневого веб-сервера, поэтому он не будет доступен веб-серверу.
В противном случае вы могли бы клонировать репо в другом месте и использовать символическую ссылку только на то, что необходимо, в корневой веб-каталог