Сколько соединений tcp будет использовано для отправки данных программой MPI, если в качестве MPI используется MPICH2?Если вы также знаете о pmi-соединениях, считайте их отдельно.
Например, если у меня 4 процесса и 2 дополнительных коммуникатора (COMM1 для 1-го и 2-го процессов и COMM2 для 3-го и 4-го);данные передаются между каждой возможной парой процессов;в каждом возможном коммуникаторе.
Я использую последние MPICH2 + Hydra + по умолчанию pmi.ОС Linux, сеть коммутируется Ethernet.Каждый процесс выполняется на отдельном компьютере.
Итак, вот несколько фрагментов данных (в парах процессов):
1 <-> 2 (in MPI_COMM_WORLD and COMM1)
1 <-> 3 (only in MPI_COMM_WORLD)
1 <-> 4 (only in MPI_COMM_WORLD)
2 <-> 3 (only in MPI_COMM_WORLD)
2 <-> 4 (only in MPI_COMM_WORLD)
3 <-> 4 (in MPI_COMM_WORLD and COMM2)
Я думаю, что может быть
Будет использоваться только 6 TCP-соединений;данные, отправленные в COMM1 и MPI_COMM_WORLD, будут смешаны в одном TCP-соединении.
8 TCP-соединений: 6 в MPI_COMM_WORLD (all-to-all =полная сетка) + 1 для 1 <-> 2
в COMM1 + 1 для 3 <-> 4
в COMM2
- другой вариант, о котором я не задумывался.