gpt4 book ai didi

tcp - MPI程序使用的tcp连接数(MPICH2+nemesis+tcp)

转载 作者:可可西里 更新时间:2023-11-01 02:47:32 38 4
gpt4 key购买 nike

如果使用的 MPI 是 MPICH2,MPI 程序将使用多少 tcp 连接来发送数据?如果您还知道 pmi 连接,请单独计算它们。

例如,如果我有 4 个进程和另外 2 个通信器(COMM1 用于第一个和第二个进程,COMM2 用于第三个和第四个进程);数据在每对可能的进程之间发送;在每一个可能的沟通者中。

我使用最近的 MPICH2 + hydra + 默认 pmi。操作系统是linux,网络是交换以太网。每个进程都在单独的 PC 上。

因此,这里是数据路径(成对的进程):

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 连接:MPI_COMM_WORLD 中的 6 个(所有到所有 = 全网状)+ 1 个用于 1 <-> 2在 COMM1 + 1 中表示 3 <-> 4在 COMM2

  • 我没有想到的其他变体。

最佳答案

正在使用的通信器不会影响已建立的 TCP 连接数。对于 --with-device=ch3:nemesis:tcp(默认配置),您将在每对通过点对点 MPI 例程直接通信的进程之间使用一个双向 TCP 连接。在您的示例中,这意味着 6 个连接。如果您使用集体,那么在引擎盖下可能会建立额外的连接。连接将延迟建立,仅在需要时才建立,但一旦建立,它们将保持建立状态,直到调用 MPI_Finalize(有时还有 MPI_Comm_disconnect)。

我不知道每个进程为 PMI 使用了多少个连接,尽管我很确定它应该是每个连接到 hydra_pmi_proxy 进程的 MPI 进程一个,加上 hydra_pmi_proxympiexec 进程之间的一些其他连接数(可能是对数)。

关于tcp - MPI程序使用的tcp连接数(MPICH2+nemesis+tcp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359682/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com