Распределение заданий между узлами на HPC вместо 1 ядра ЦП - PullRequest
0 голосов
/ 18 декабря 2018

Я использую PBS, HPC для отправки серийно написанных C-кодов.Я должен запустить, предположим, 5 кодов в 5 разных каталогах.когда я выбираю 1 узел и 5 ядер , выберите = 1: ncpus = 5 и отправьте его с помощью . / submit & .Разветвляется и запускает все 5 заданий.В тот момент, когда я выбираю 5 узлов и 1 ядро ​​ select = 5: ncpus = 1 , и отправляю его с помощью . / Submit & .Только 1 ядро ​​первого узла выполняет все пять заданий, а остальные 4 потока свободны, скорость снижена до 1 / 5.

Мой вопрос: возможно ли также разделить задание между узлами?потому что когда я выбираю на HPC select = 1: ncpus = 24 , он попадает в Que вместо select = 4: ncpus = 6 run.Спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Вам следует рассмотреть возможность использования массивов заданий (используя опцию #PBS -t 1-5) с узлом I и 1 процессором в каждом.Затем запустятся 5 независимых заданий, и ваша очередь будет меньше ждать в очереди.В вашем скрипте вы можете использовать переменную окружения PBS_ARRAYID, чтобы идентифицировать задачу и использовать ее, чтобы установить соответствующий каталог и запустить соответствующий код C.Примерно так:

#!/bin/bash -l
#PBS -N yourjobname
#PBS -q yourqueue
#PBS -l nodes=1:ppn=1
#PBS -t 1-5

./myprog-${PBS_ARRAYID}.c

Этот скрипт будет запускать 5 заданий, и каждое из них будет запускать программы с именем myprog - *. C, где * - число от 1 до 5.

...