Slurm: Выделение ресурсов для скрипта Python, который вызывает как параллельные программы с общей памятью, так и MPI-программы

#python #mpi #python-multiprocessing #slurm

Вопрос:

Я пишу скрипт на Python, который является драйвером для двух внешних программ с разными моделями распараллеливания, и мне было интересно, как лучше всего запросить для него ресурсы в Slurm.

Одна программа параллельна с общей памятью ( #SLURM --ntasks 1 --cpus-per-task 16 ), а другая использует MPI ( #SLURM --ntasks 16 --cpus-per-task 1 ). Кроме того, в моем сценарии две программы могут управляться независимо друг от друга, поэтому в идеале я хотел бы запустить два процесса с multiprocessing пакетом Python, а затем присоединиться, когда оба будут завершены.

Ограничения:

  1. Я не могу создавать новые экземпляры Python, что означает, что я не могу использовать сценарий менеджера для создания и запуска независимых заданий Slurm с различным распределением ресурсов.

Возможные решения:

  1. Выделите наибольшее количество как рабочих мест, так и ненужных ресурсов ( #SLURM --ntasks 16 --cpus-per-task 16 )
  2. Каким — то образом используйте разнородные задания Slurm, хотя для этого, по-видимому, требуются srun два автономных исполняемых файла-любые советы по этому вопросу также были бы полезны.

Спасибо!