Просто научитесь программировать на суперкомпьютере, состоящем из ~ 100 узлов, каждый узел состоит из 4 процессоров Xeon и оперативной памяти 64 ГБ.
Я хочу назначить задания каждому узлу, а затем создать локальные многопоточные программы на каждом узле. Я хочу знать, что по умолчанию, когда MPI создает группу процессов, существует ли сопоставление 1-1 между каждым процесс задачи и один конкретный локальный узел или нет? (в моем случае это узел, состоящий из 4 процессоров Xeon с полностью 24 ядрами и оперативной памятью 64 ГБ).
MPI будет запускать M процессов на N узлах, где M может быть меньше, равно или больше N.
Этот сайт описывает настройку.
Я не могу найти прямой ответ на ваш вопрос, но в Интернете есть несколько сайтов, обсуждающих process migration
а также checkpointing
, Но общая тема этих сайтов, кажется, заключается в том, что эта работа все еще находится в стадии разработки. Поэтому я не ожидал бы, что это будет происходить автоматически в вашей реализации MPI.
Этот сайт обсуждает MPI_GET_PROCESSOR_NAME
команда, которая может использоваться при миграции процессов, но утверждает, что «ничто в MPI не требует и не определяет миграцию процессов; это определение MPI_GET_PROCESSOR_NAME просто допускает такую реализацию». С помощью этой команды вы можете по крайней мере проверить, активно ли переносится ваш код.
Других решений пока нет …