Как установить количество потоков в качестве нисходящей переменной в очереди заданий PBS - PullRequest
0 голосов
/ 04 января 2019

Есть ли способ определить, сколько потоков доступно программе, когда я запускаю ее из сценария задания PBS?

В заголовке моего сценария работы PBS я установил

#PBS -l nodes=1:ppn=8

Есть ли команда, которую я могу использовать, чтобы определить количество потоков - чтобы я мог установить переменную равной этому числу (для последующих процессов).

Таким образом, я могу установить потоки как $k для последующих процессов, вместо того, чтобы проходить код построчно каждый раз, когда я меняю #PBS -l nodes=1:ppn=_.


Спасибо всем! Я нашел обходной путь - Поэтому, если я использую один узел, переменная, которую я ищу, это $ PBS_NUM_PPN

1 Ответ

0 голосов
/ 05 января 2019

По умолчанию PBS не отображает настройку ppn в запущенном задании. И нет никакого способа, чтобы скрипт оболочки мог читать свои комментарии ... не зная и не анализируя свой источник (и это, вероятно, не сработает здесь по нескольким причинам.)

Но вот пара идей:

  1. Вы можете передать произвольную переменную из командной строки qsub, используя параметр -v. (Вы можете сделать то же самое, используя #PBS -v ..., но это будет эквивалентно установке переменной в вашем скрипте обычным способом.)

  2. Вы должны иметь возможность указывать ресурсы (используя -l) в командной строке qsub вместо сценария задания.

Соберите их так:

qsub ... -l nodes=1:ppn=8 - v NOSTHREADS=8 myscript.pbs

, где myscript.pbs:

#!/bin/bash
#PBS directives ... without the "-l" !!!

# ordinary shell commands.

somecommand --someoption $NOSTHREADS ...

Примечание: я рекомендую не смешивать , указав ресурсы в командной строке и в скрипте. Положите параметры "-l" только в одном месте. Если вы разместите их в обоих местах И в вашей установке Torque / PBS используются фильтры отправки заданий, все может запутаться.


В качестве альтернативы, вы можете написать оболочку (или python или что-то еще), которая генерирует сценарий PBS с соответствующими значениями ресурса (ов) ppn (и т. Д.) И соответствующей переменной (ями) встроен в сгенерированный скрипт.

Преимущество этого подхода в том, что он более воспроизводим ... если вы также делаете несколько других вещей. (Спросите местного аналитика eResearch о воспроизводимости ваших научных вычислений.)


Если ни одно из вышеперечисленного не может быть выполнено, вы могли бы иметь возможность проверить настройки ulimit в сценарии задания. Тем не менее, я понимаю, что PBS mon обычно не использует ограничения ulimit в качестве средства обеспечения ограничений потоков / процессов. Вместо этого он будет отслеживать количество активных ядер. (Ресурс ppn ограничивает количество процессоров, а не количество потоков или процессов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...