При использовании кластеров SMP-машин (с устройством ch_p4, сконфигурированным с
опцией
-comm=shared), Вы можете контролировать количество процессов на
каждом узле, которые общаются через разделяемую память. Во-первых, Вы должны
изменить файл machines (см. разд. 3.2), чтобы указать количество
процессов, запускаемых на каждой машине. Обычно это число не больше количества
процессоров; на SMP с большим количеством процессоров это число должно быть на
единицу меньше, чтобы предоставить один процессор операционной системе. Формат
очень прост: каждая строка файла machines определяет имя компьютера,
возможно продолженное двоеточием (:) и количеством возможных процессов.
Например, файл содержит строки
mercury
venus
earth
mars:2
jupiter:15
определяющие три однопроцессных машины (mercury, venus, earth),
двухпроцессную машину mars и 15-процессную машину jupiter.
По умолчанию mpirun использует не более процессоров, чем указано в файле
machines для каждого узла, до 16 процессов на каждой машине. При установке
переменной окружения MPI_MAX_CLUSTER_SIZE с положительным целым
значением, mpirun может запускать не более MPI_MAX_CLUSTER_SIZE
процессов на машине, разделяя память для взаимодействия. Например, если
MPI_MAX_CLUSTER_SIZE имеет значение 4, то команда mpirun -np 9
для указанного выше файла machines создаст один процесс на машинах
mercury, venus, earth, два процесса на mars (поскольку файл
machines определяет, что mars может иметь два процесса, разделяющих
память) и 4 на jupiter (поскольку jupiter может иметь 15 процессов,
но необходимы только 4). Если необходимо 10 процессов, mpirun стартует
заново с начала файлаmachines, создавая дополнительный процесс на
mercury; значение MPI_MAX_CLUSTER_SIZE предотвращает запуск
mpirun пятого процесса с разделяемой памятью на jupiter.