2016-02-29 4 views
8

Обычно, когда я использую mpirun, я могу «перегрузить» его, используя больше процессоров, чем на моем компьютере. Например, на моем четырехядерном Mac я могу запустить mpirun -np 29 python -c "print 'hey'" без проблем. Я на другой машине сейчас, что бросает следующее сообщение об ошибке:mpirun - недостаточно доступных слотов

$ mpirun -np 25 python -c "print 'hey'" 
-------------------------------------------------------------------------- 
There are not enough slots available in the system to satisfy the 25 slots 
that were requested by the application: 
    python 

Either request fewer slots for your application, or make more slots available 
for use. 
-------------------------------------------------------------------------- 

Почему не «разгонный» mpirun работает здесь? Есть ли способ преодолеть это сообщение об ошибке и успешно запустить с большим количеством процессоров, чем доступно?

+0

Вы, вероятно, имеете в виду переподписку, а не перегрузку или разгон. BTW, какую реализацию MPI вы используете? – Harald

+0

@Harald Я задал этот вопрос на пару вопросов, связанных с mpi, и ответ в том, что я просто не знаю. Возможно ли, чтобы не администратор мог найти эту информацию? – kilojoules

+0

'mpirun --version' yields' (Open MPI) 1.7.3' – kilojoules

ответ

7

В соответствии с https://www.open-mpi.org/faq/?category=running#oversubscribing вы можете переназначить свой узел с помощью файла хоста. Прежде чем продолжить, будьте осторожны, чтобы таким образом вы могли серьезно ухудшить производительность узла. Кроме того, если система, используемая для запуска приложения, использует систему очередей, это может быть неверным.

Сначала создайте hostfile (названный hostfile), содержащий

localhost slots=25 

просто запустить приложение как

mpirun --hostfile hostfile -np 25 python -c "print 'hey'" 
+0

Прохладный. Похоже, что моя система очередей не позволяет переписывать «Недостаточно слотов в системе, чтобы удовлетворить 100 слотов , которые были запрошены приложением« – kilojoules

5

Видимо oversubscribing может быть достигнута с помощью "--oversubscribe" вариант с mpirun - сделал трюк для меня с текущим крутящим моментом/мауи

+0

Это кажется намного приятнее, чем принятый ответ. Обратите внимание, что флаг '--oversubscribe' является функцией OpenMPI 3.x. Этот флаг не существует в OpenMPI 2.x, но здесь недопустимая подписка разрешена по умолчанию. –

+0

Ну ... OpenMPI 3.0 не существовал, когда OP поднял вопрос. Приятно видеть, что openmpi упростил переписку. – Harald