如何在MPI(openMPI应用程序)中获取后端传输类型/配置?

时间:2015-07-14 20:56:43

标签: c++ c mpi

所以我有权将作业提交到一个小型集群,如何在MPI应用程序中获取正在运行的后端MPI类型(infiniband,以太网等)?

1 个答案:

答案 0 :(得分:3)

Open MPI对在每台主机上找到的网络互连进行排名,并选择允许与其他节点通信的最快的网络互连。 InfiniBand总是胜过以太网,除非有人提出BTL组件优先级(通常没有)。

要查看正在选择的组件,请将BTL框架的详细级别设置为至少5:

$ mpiexec --mca btl_base_verbose 5 -np 2 ./a.out 
[host:08691] mca: bml: Using self btl to [[56717,1],1] on node host
[host:08690] mca: bml: Using self btl to [[56717,1],0] on node host
[host:08691] mca: bml: Using vader btl to [[56717,1],0] on node host
[host:08690] mca: bml: Using vader btl to [[56717,1],1] on node host

你在这里看到的是来自两个BTL组件的模块被实例化了:

  • self,Open MPI用于在同一进程内进行通信;
  • vader,以前称为sm,它通过共享内存为同一节点上的进程实现消息传递。

如果使用10G以太网或IPoIB上的TCP / IP,您将看到tcp BTL被选中。否则,输出取决于您拥有的Open MPI版本。对于旧版本,Mellanox InfiniBand HCA由openib BTL组件本机驱动。对于较新的版本,mx MTL接管,您可能需要通过将mtl_base_verbose设置为5来增加MTL框架的详细程度。