Можете ли вы запросить дополнительные процессоры на лету в MPI? - PullRequest
1 голос
/ 24 июля 2011

С помощью MPI в C вы можете сделать следующее для запуска программы:

mpirun -np 5 program

, где 5 - это число используемых процессоров, а program - это числоПрограмма для запуска на этих процессорах.Можно ли запросить x процессоров, как описано выше, но тогда, когда программа работает, если вы решите, что вам нужно y процессоров (скажем, y>x), вы можете запросить больше без перезапуска программы?

Если ответ да, то как ты это делаешь?Если нет, то почему бы и нет?

Большое спасибо.

1 Ответ

3 голосов
/ 24 июля 2011

Это возможно; но это не тривиально. Приложение должно быть закодировано для поддержки этого. По сути, существует проблема, заключающаяся в том, что mpi предоставляет различные глобальные примитивы связи и синхронизации, и непонятно, что делать с такими операциями при добавлении нового параллелизма - в конце концов, вы бы не хотели, чтобы новые процессы недетерминированно блокировали или сбивали другие.

Вот некоторая документация на сайте IBM - любая реализация MPI2 должна соответствовать одному и тому же плану. Джонатан отмечает, что сама спецификация MPI включает довольно хороший пример того, как это сделать для решения проблемы типа мастер-работник .

...