Я обычно обрабатываю данные по университетскому кластеру. Большинство заданий, выполненных ранее, основаны на параллельной пакетной оболочке (разделите задание на несколько пакетов, а затем отправьте их параллельно). Пример этой оболочки показан ниже:
#! /bin/bash
#BSUB -J model_0001
#BSUB -o z_output_model_0001.o
#BSUB -n 8
#BSUB -e z_output_model_0001.e
#BSUB -q general
#BSUB -W 5:00
#BSUB -B
#BSUB -N
some command
На этот раз я тестирую задание mpi (на основе mpi4py). Код был протестирован на моем ноутбуке, работающем над одной задачей (1 задача использует 4 процессора для запуска). Теперь мне нужно отправить многозадачные (30) задания в кластер (1 задание, использующее 8 процессоров для запуска). Мой план таков: подготовьте 30 подобных файлов оболочки, указанных выше. команда в каждом заполнении оболочки - это моя команда mpi (что-то вроде «mpiexec -n 8 mycode.py args»). И каждая оболочка резервирует 8 процессоров.
Я представил вакансии. Но я не уверен, правильно ли я поступаю. Он работает, но я не уверен, работает ли он на основе mpi. Как я могу проверить? Вот еще 2 вопроса:
1) Для обычных параллельных заданий обычно существует ограничение на число, которое я могу зарезервировать для одной задачи — 16. Выше 16 мне никогда не удавалось. Если я использую mpi, могу ли я зарезервировать больше? Потому что mpi отличается. В принципе мне не нужна постоянная память.
2) Я думаю, что в кластере есть правило приоритета. Для обычных параллельных заданий, обычно когда я резервирую больше процессоров для 1 задачи (скажем, 10 задач и 16 процессоров на задачу), это требует гораздо большего времени ожидания в очереди, чем резервирование меньшего количества процессоров для одной задачи (скажем, разделить каждую задачу на 8 подзадач). -задач (всего 80 подзадач) и 2 процессора на подзадачу). Если я могу зарезервировать больше процессоров для mpi. Влияет ли это на это правило? Я боюсь, что буду ждать вечность...