«Узлы» в MPI (обычно называемые «рангами») не обязательно должны соответствовать физическим вычислительным узлам. Фактически, может быть даже полезно запускать несколько процессов MPI («рангов») для каждого физического узла. В Руководстве по настройке HPC для AMD EPYC приведены некоторые рекомендации для их процессоров. Например, Intel MPI использует параметр -ppn
для настройки количества процессов на узел .
* 1007. * При этом: если вам просто нужно запустить приложение на двух рангах MPI на вашем хосте, то обычно просто набрать
$ mpirun -n 2 your-app.x
, чтобы получить два ранга на вашем локальном компьютере (так как большинство MPIРеализации предварительно настраивают слоты, равные количеству физических процессоров на вашем хосте). Независимо от того, являются они локальными или нет, реализация MPI выберет подходящий способ связи для этих двух процессов.
В случае, если mpirun
явно требуется хост, используйте:
$ mpirun -host localhost -n 2 your-app.x
С дополнительными опциями для mpirun
(см. Справочную документацию) вы даже можете закрепить процессы MPI на определенных процессорах, хотя реализация MPI и ОС обычно распределяют их достаточно хорошо для тестовых запусков.
Если вам действительно нужно, чтобы mpirun
обрабатывал ваш единственный хост как два узла, вы можете использовать тот факт, что в Linux полная подсеть 127.0.0.x
отображается на ваш локальный хост и объединяет опции -host
и -ppn
. С программой MPI helloworld по умолчанию это выглядит так:
$ FI_PROVIDER=tcp mpiexec -ppn 2 -hosts 127.0.0.1,127.0.0.2 ./helloworld
Hello world from processor myhost, rank 1 out of 4 processors
Hello world from processor myhost, rank 3 out of 4 processors
Hello world from processor myhost, rank 0 out of 4 processors
Hello world from processor myhost, rank 2 out of 4 processors
Разрешение внутреннего имени хоста, к сожалению, дает вам всегда одно и то же имя процессора, но тот факт, что вы получаете 4 ранга при запросе двух процессоров на узел, показывает, что этоработает в соответствии с запросом.
FI_PROVIDER
Я должен был указать, чтобы обойти проблему в последней версии Intel MPI .
Кстати, это не относится к Fortran.