如果使用的 MPI 是 MPICH2,MPI 程序将使用多少 tcp 连接来发送数据?如果您也了解 pmi 连接,请分别计算它们。
例如,如果我有 4 个进程和另外 2 个通信器(COMM1 用于第 1 和第 2 进程,COMM2 用于第 3 和第 4 进程);数据在每对可能的进程之间发送;在每一个可能的传播者中。
我使用最近的 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 连接中。
- 案例二:
8 个 tcp 连接:MPI_COMM_WORLD 中的 6 个(全对所有 = 全网格)+ 1 <-> 2
COMM1 中的 1 个 + 3 <-> 4
COMM2中的 1 个
- 我没有想到的其他变体。