Ответ на Q1
Когда вы отправляете работу как bsub -n 3 myprogram
, все LSF делает это выделить 3 слота через 1-3 хостов. Один из этих хостов будет назначен «первым хостом выполнения», и LSF отправит и запустит один экземпляр myprogram
на этом хосте.
Если вы хотите параллельно запустить myprogram
, LSF имеет команду под названием blaunch
, которая по существу запускает один экземпляр программы на каждое выделенное ядро. Например, отправьте свою работу, например, bsub -n 3 blaunch myprogram
будет запускать 3 экземпляра myprogram
.
Ответ на Q2
К «управлять передачей данных» Я предполагаю, что вы имеете в виду связь между экземплярами myprogram
. Ответ - нет, LSF - это средство планирования и диспетчеризации. Все, что он делает, это распределение и отправка, но он не знает, что делает программа отправки. blaunch
, в свою очередь, просто запускает задачу, он просто запускает несколько экземпляров задачи.
Что вы здесь, это какая-то структура параллельного программирования, такая как MPI (см., Например, www.openmpi.org). Это обеспечивает набор API и команд, которые позволяют вам писать myprogram
параллельно.
Как только вы это сделали и включили свою программу в mympiprogram
, вы можете отправить ее в LSF, как bsub -n 3 mpirun mympiprogram
. Инструмент mpirun
- по крайней мере, в случае OpenMPI (и некоторых других) - интегрируется с LSF и использует интерфейс blaunch
под капотом для запуска ваших задач для вас.
Ответ на Q3
Вам не нужно использовать библиотеки LSF в вашей программе, чтобы сделать что-нибудь более легкое для LSF, как я уже говорил, что происходит внутри программы является прозрачной для системы. Библиотеки LSF просто позволяют вашей программе стать клиентом системы LSF (отправлять задания, запрос и т. Д.)
Спасибо. Openmpi выглядит интересно. – Gowtham