Количество соединений TCP, используемых программой MPI (MPICH2 + Немезида + TCP) - PullRequest
1 голос
/ 02 декабря 2011

Сколько соединений 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)

Я думаю, что может быть

  • Случай 1:

Будет использоваться только 6 TCP-соединений;данные, отправленные в COMM1 и MPI_COMM_WORLD, будут смешаны в одном TCP-соединении.

  • Случай 2:

8 TCP-соединений: 6 в MPI_COMM_WORLD (all-to-all =полная сетка) + 1 для 1 <-> 2 в COMM1 + 1 для 3 <-> 4 в COMM2

  • другой вариант, о котором я не задумывался.

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011

Какие коммуникаторы используются, не влияет на количество установленных соединений TCP. Для --with-device=ch3:nemesis:tcp (конфигурация по умолчанию) вы будете использовать одно двунаправленное TCP-соединение между каждой парой процессов, которые напрямую взаимодействуют через подпрограммы MPI «точка-точка». В вашем примере это означает 6 соединений. Если вы используете коллективы, то под капотом могут быть установлены дополнительные соединения. Соединения будут устанавливаться лениво, только по мере необходимости, но после установления они будут оставаться установленными до тех пор, пока не будет вызван MPI_Finalize (а иногда и MPI_Comm_disconnect).

Сверху головы, я не знаю, сколько соединений используется каждым процессом для PMI, хотя я вполне уверен, что это должно быть одно соединение для каждого процесса MPI, подключающегося к процессам hydra_pmi_proxy, плюс некоторое другое число. (вероятно, логарифмический) связей между процессами hydra_pmi_proxy и mpiexec.

0 голосов
/ 05 декабря 2011

Я не могу ответить на ваш вопрос полностью, но вот что нужно учитывать.В MVAPICH2 для PMI мы разработали механизм соединения на основе дерева.Таким образом, каждый узел будет иметь log (n) TCP-соединений на макс.Поскольку при открытии сокета вы ограничиваете количество дескрипторов открытых файлов в большинстве операционных систем, вполне вероятно, что библиотека MPI будет использовать логическую топологию в своих рядах для ограничения количества соединений TCP.

...