Сценарий отправки заданий MPI+OpenMP на LSF

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

##BSUB -n 64

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


person Bhaiti    schedule 09.06.2015    source источник


Ответы (1)


Прежде всего, перед часовыми 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 своим собственным сокетом ЦП. К сожалению, это очень зависит от реализации, например:

Откройте MPI 1.6.x или старше:

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

Откройте 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
person Hristo Iliev    schedule 09.06.2015