MPI-2 поддерживает (приблизительно) этот вид операций, Google - документацию для mpi_comm_spawn
и соответствующие подпрограммы.Я пишу приблизительно , потому что, строго говоря, MPI касается только процессов , а не процессоров .Изучите также документацию по подпрограмме mpi_comm_get_attr
и предопределенной константе mpi_universe_size
, которая обеспечивает связь между вашей программой и средой времени выполнения, чтобы выяснить, например, количество доступных процессов.
Вы можетеобнаружите, что система управления заданиями на вашем параллельном компьютере не позволяет программе захватывать больше процессоров во время ее работы.
Чего вы, скорее всего, захотите избежать, так это захватить, скажем, 10 процессоров для 10 процессов в начале выполнения вашей работы, а затем порождать еще 20 процессов для запуска на тех же 10 процессорах.