Командные файлы

В случае, когда командная строка для постановки задачи в очередь, используя bsub, становиться очень большой, целесообразно использовать командные файлы. Традиционно они имеют расширение lsf. В данном разделе будет приведен пример составления данного файла, более подробную информацию смотрите в официальной документации .

Например, необходимо запустить задачу на 40 минут в очереди normal на 4-х графических картах, используя два вычислительных узла, две карты на одном узле и две на другом. В этом случае командный файл my_task.lsf будет выглядеть следующим образом:

# Пример командного файла
#BSUB -n 4 -q normal
#BSUB -W 0:40
#BSUB -R "span[ptile=2]"
#BSUB -gpu "num=2:mode=exclusive_process"
#BSUB  -o filename.%J.out
#BSUB  -e filename.%J.err
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:path_to_library
mpiexec ./my_job 

Запуск в этом случае будет выглядеть:

 bsub < my_task.lsf 

Как видно из примера строки начинающиеся с #BSUB задают параметры планировщику, при этом допустимо объединять несколько параметров в одну строку. Строки с символом # за которыми не следует BSUB воспринимаются как комментарии.

Несмотря на то, что указанные в примере опции описаны в разделе постановка заданий в очередь, далее разберем подробно каждую строку командного файла

#BSUB -n 4 -q normal

Данная строчка указывает планировщику, что нужно задействовать 4 ядра и поставить задачу в очередь normal

#BSUB -W 0:40

Эта строчка указывает, что задание будет запущено на 40 минут

#BSUB -R "span[ptile=2]"

Эта строчка указывает планировщику, что указанное ранее число ядер нужно поделить по два ядра на каждый вычислительный узел.

#BSUB -gpu "num=2:mode=exclusive_process"

Здесь указывается, что будут задействованы две графические карты в эксклюзивном режиме.

#BSUB  -o filename.%J.out
#BSUB  -e filename.%J.err

Эти строки указывают планировщику, какие имена присвоить файлам стандартного вывода и потока сообщений об ошибках. Переменная %J будет автоматически заменена LSF'ом на уникальный числовой идентификатор задания. Файлы будут созданы в текущей директории.

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:path_to_library
mpiexec ./my_job 

Последние две строчки указывают путь до нужной библиотеке и запускают задачу.

Другие примеры использования командного файла можно посмотреть в разделе постановка в очередь программ, написанных с использованием стандарта OpenMP, а также используя скрипт mpisubmit.pl с ключом -d.