ЦКП ВВР ПГНИУ

Суперкомпьютерный центр Пермского университета

Инструменты пользователя

Инструменты сайта


man:lsf

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
man:lsf [22.11.2016 11:31:05]
faubert
man:lsf [19.09.2022 23:00:13] (текущий)
Admin
Строка 1: Строка 1:
 ====== LSF ====== ====== LSF ======
  
-===== Что это такое? ===== +IBM Platform LSF - мощная платформа управления нагрузкой для требовательных распределенных сред высокопроизводительных вычислений. Она предоставляет исчерпывающий набор интеллектуальных компонентов на основе стратегий,​ которые позволяют воспользоваться всеми ресурсами вычислительной инфраструктуры и обеспечить оптимальную производительность приложений.
- +
-IBM Platform LSF - это ​мощная платформа управления нагрузкой для требовательных распределенных сред высокопроизводительных вычислений. Она предоставляет исчерпывающий набор интеллектуальных компонентов на основе стратегий,​ которые позволяют воспользоваться всеми ресурсами вычислительной инфраструктуры и обеспечить оптимальную производительность приложений.+
  
 ===== Разработка скрипта задания ===== ===== Разработка скрипта задания =====
  
-Задание ​lsf представляет собой абстрактную сущность,​ состоящую из набора команд и параметров. ​Задание представляется пользователю в виде скрипта для оболочки (shell), содержащего требования к ресурсам,​ атрибуты задания и набор команд,​ которые необходимо выполнить. Единожды создав скрипт задания,​ им можно пользоваться столько раз, сколько необходимо, также возможна его модификация. +Задание ​LSF представляет собой абстрактную сущность,​ состоящую из набора команд и параметров. ​Оно представляется пользователю в виде скрипта для оболочки (shell), содержащего требования к ресурсам,​ атрибуты задания и набор команд,​ которые необходимо выполнить. Единожды создав скрипт задания,​ им можно пользоваться столько раз, сколько необходимо. Также возможна его модификация. 
-Задание ​сначала необходимо поставить в очередь lsf, затем из этой очереди оно будет передано на один узлов для выполнения. Очередей заданий может быть несколько. + 
-Вот пример ​простого ​скрипта задания:+Запуск задания осуществляется командой **[[ :​man:​lsf#​bsub | bsub]]**
 + 
 +==== Пример скрипта запуска последовательной задачи ====
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
 +
 +#BSUB -J MyJob
 +#BSUB -P MyProject
 +#BSUB -W 00:20
 +#BSUB -n 2                  ​
 +#BSUB -oo output.log
 +#BSUB -eo error.log
 +
 +./​my_program
 +</​code>​
 +^  Ключ bsub  ^  Значение ​ ^  Описание ​ ^
 +^ | **//#​!/​bin/​bash//​** | оболочка,​ использующаяся при выполнении скрипта |
 +^ -J | **//​MyJob//​** | название задачи |
 +^ -P | **//​MyProject//​** | название проекта,​ в рамках которого запускается задача |
 +^ W | **//​00:​20//​** | время на выполнение задачи (часы:​минуты) |
 +^ -n | **//2//** | количество ядер CPU, необходимое для задачи |
 +^ -o | **//​output.log//​** | имя файла вывода |
 +^ -e | **//​error.log//​** | имя файла ошибок |
 +^ | **//​./​my_program//​** | программа для запуска | 
 +
 +
 +==== Пример скрипта запуска OpenMP-задачи ====
 +<​code>#​!/​bin/​bash
 # #
-##BSUB -P project_code ​       # project code +#BSUB -J MyJob 
-#BSUB -W 00:20               # wall-clock time (hrs:mins) +#BSUB -P MyProject ​                   
-#BSUB -n 8                  # number of tasks in job          +#BSUB -W 00:10                          ​ 
-##BSUB -R "​span[ptile=16]" ​   # run 16 MPI tasks per node +#BSUB -n 1                                        
-#BSUB -J test_mpi ​           # job name +#BSUB -e error.log 
-#BSUB -oo output.log          # output file name in which %J is replaced by the job ID +#BSUB -o output.log 
-#BSUB -eo error.log           # error file name in which %J is replaced by the job ID +
-##BSUB -q high_priority ​      # queue+
  
-#module load openmpi-x86_64+./​my_openmp_program  
 +</​code>​
  
-#run the executable +| ''​export OMP_NUM_THREADS''​ | ''​4''​ | Регулирует кол-во создаваемых потоков для OpenMP-задачи |
-mpirun ./mpi+
  
 +==== Пример скрипта запуска MPI-задачи ====
 +<​code>​
 +#!/bin/bash
 +#
 +#BSUB -J MyMPIJob ​         ​
 +#BSUB -W 00:20             
 +#BSUB -n 2                       
 +#BSUB -R "​span[ptile=1]"  ​
 +#BSUB -oo output.out ​         ​
 +#BSUB -eo error.err ​          
 +
 +module load mpi/​openmpi-x86_64
 +mpirun ./​my_mpi_program
 </​code>​ </​code>​
-**Важно:​** Каждая строка представляет собой некоторую директиву LSF, которой задано некоторое значение. Каждая директива в скрипте начинается со знака #. Комментарии обозначаются знаком ##. 
-  
-  * **Строка 1** является стандартной для любого скрипта с описанием задания,​ она определяет,​ какая оболочка используется для исполнения сценария. Оболочка bash используется по умолчанию для запуска сценария,​ но можно использовать и другую. 
  
-  * **Строки со 3-й по 10-ю** являются директивами LSF. Система будет читать скрипт до тех ​пор, пока не найдет первую ​строку, которая не является валидной директивой LSF, и останавливается. Это означает, что ​оставшаяся часть сценария содержит список команд или задачкоторые пользователь желает запустить.+| ''#​BSUB ​-n''​ | ''​2''​ | Количество процессов MPI | 
 +| ''#​BSUB -R "​span[ptile= ]''​|''​1''​| Директива ​для задания кол-ва MPI процессов на одном узле |  
 +| ''''​|''​mpirun ./​my_mpi_program''​| Программа для запуска MPI-задачи |  
 + 
 +==== Пример скрипта запуска .NET-приложения ==== 
 +<​code>​ 
 +#​!/​bin/​bash 
 +
 +#BSUB -J dotnet ​         
 +#BSUB -W 00:20              
 +#BSUB -n 2                        
 +#BSUB -oo output.out ​          
 +#BSUB -eo error.err            
 + 
 +dotnet run 
 +</​code>​
  
-  * **Строка 15** является командой для ​выполнения, которую ​пользователь хочет запустить.+| ''#​BSUB -n''​ | ''​2''​ | Количество используемых ядер процессора |
  
-**Список используемых директорий:​** +===== Команды ​LSF =====
-<​code>​ #BSUB -P <name_of project> </​code>​ Задает ​название проекта,​ в рамках которого запускается задача. +
-<​code>​ #BSUB -W <​HH:​MM>​ </​code>​ Задает максимальное время выполнения задачи. В формате (час:​мин). +
-<​code>​ #BSUB -n <number of tasks> </​code>​ Задает общее кол-во задач,​которое должно быть запущено. +
-<​code>​ #BSUB -R "​span[ptile=<number of tasks per node>​]"</​code>​ Задает кол-во задач, которое будет запущено на каждом узле. +
-<​code>​ #BSUB -J <name task></​code>​ Задает название задачи. +
-<​code>​ #BSUB -oo <name of output file> </​code>​ Задает файл стандартного вывода. +
-<​code>​ #BSUB -eo <name of error file> </​code>​ Задает файл вывода ошибок.+
  
-==== Команда ​bsub ==== +==== bsub ==== 
-Отправка заданий на кластер осуществляется с помощью ​команды bsub. Например,​ отправка ​задания sleep, описанного скриптом sleep.lsf, выполняется командой bsub с именем ​скрипта как параметром:​ +Запуск задачи 
-<​code>​ bsub < sleep.lsf </​code>​+<​code>​bsub < MyJob.lsf </​code>​ 
 +| ''​MyJob.lsf''​ | скрипт ​запуска задачи |
  
-==== Команда ​bjobs ==== +==== bjobs ==== 
-Просмотреть состояние задач ​в очереди можно с помощью команды ​bjobs+Информация ​о текущих задачах 
 +<​code>​bjobs</​code>​
  
 +==== bhist ====
 +Информация обо всех когда-либо запущенных задачах
 +<​code>​bhist -a</​code>​
  
 +==== bkill ====
 +Завершение задачи
 +<​code>​bkill 12345 </​code>​
 +| ''​12345''​ | номер задачи |
man/lsf.1479796265.txt.bz2 · Последние изменения: 22.11.2016 11:31:05 — faubert