По умолчанию PBS не отображает настройку ppn
в запущенном задании. И нет никакого способа, чтобы скрипт оболочки мог читать свои комментарии ... не зная и не анализируя свой источник (и это, вероятно, не сработает здесь по нескольким причинам.)
Но вот пара идей:
Вы можете передать произвольную переменную из командной строки qsub
, используя параметр -v
. (Вы можете сделать то же самое, используя #PBS -v ...
, но это будет эквивалентно установке переменной в вашем скрипте обычным способом.)
Вы должны иметь возможность указывать ресурсы (используя -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
ограничивает количество процессоров, а не количество потоков или процессов.)