В случае, когда командная строка для постановки задачи в очередь, используя 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.