2015-06-09 4 views
0

Я очень новичок в LSF. У меня есть 4 узла с двумя сокетами на узел. Каждый узел имеет 8 ядер. Я разработал гибридный MPI + OpenMP-код. Я отправляю задание следующим образом, в котором каждый ядро ​​запрашивает одну задачу MPI. Поэтому я теряю силу OpenMP.Сценарий отправки MPI + OpenMP на LSF

##BSUB -n 64 

Я хотел бы представить свою работу так, чтобы каждый сокет работает одна задача MPI, а не каждое ядро, так что ядра внутри гнезда можно использовать для OpenMP. Как я могу создать сценарии отправки задания, чтобы оптимизировать силу гибридизации в моем коде.

ответ

0

Прежде всего, дознакам BSUB должен предшествовать один знак #, в противном случае они будут пропущены как обычные комментарии.

Правильный способ запуска гибридного задания с более старыми версиями LSF состоит в том, чтобы передать только запрос на ресурс и запрашивать узлы span. Для того, чтобы начать работу с 8 MPI процессов и 8 OpenMP нитей каждая, вы должны использовать следующее:

#BSUB -n 8 
#BSUB -x 
#BSUB -R "span[ptile=2]" 

параметры являются следующие:

  • -n 8 - Запросы на 8 слотов для MPI процессов
  • -x - запросы узлов исключительно
  • -R "span[ptile=2]" - инструктирует LSF, чтобы охватить работу в течение двух временных интервалов на каждый узел

Вы должны запрашивать узлы исключительно, иначе LSF планирует назначить другие задания тем же узлам, поскольку будет использоваться только два слота на узел.

Затем вы должны установить переменную окружения OMP_NUM_THREADS в значение 4 (количество ядер на сокет), сообщить библиотеке MPI передать переменную процессам MPI и сделать библиотеку ограничивать каждый процесс MPI собственным гнездом процессора , Это, к сожалению, очень конкретной реализации, например:

Open MPI 1.6.x или старше:

export OMP_NUM_THREADS=4 
mpiexec -x OMP_NUM_THREADS --bind-to-socket --bysocket ./program.exe 

Open MPI 1.7.x или новее:

export OMP_NUM_THREADS=4 
mpiexec -x OMP_NUM_THREADS --bind-to socket --map-by socket ./program.exe 

Intel MPI (не уверен, этот, поскольку я не часто использую IMPI):

mpiexec -genv OMP_NUM_THREADS 4 -genv I_MPI_PIN 1 \ 
     -genv I_MPI_PIN_DOMAIN socket -genv I_MPI_PIN_ORDER scatter \ 
     ./program.exe 
Смежные вопросы