Сколько tcp-соединений будет использоваться для отправки данных программой MPI, если используемым MPI является MPICH2? Если вы знаете также о соединениях pmi, посчитайте их отдельно.
Например, если у меня есть 4 процесса и дополнительно 2 коммуникатора (COMM1 для 1-го и 2-го процессов и COMM2 для 3-го и 4-го); данные пересылаются между каждой возможной парой процессов; во всех возможных коммуникаторах.
Я использую последние версии MPICH2 + гидра + 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)
я думаю может быть
- Дело 1:
Будут использоваться только 6 соединений tcp; данные, отправленные в COMM1 и MPI_COMM_WORLD, будут смешаны в одном TCP-соединении.
- Случай 2:
8 tcp-соединений: 6 в MPI_COMM_WORLD (все ко всем = полная сетка) + 1 для 1 <-> 2
в COMM1 + 1 для 3 <-> 4
в COMM2
- другой вариант, о котором я не подумал.