所以我有权将作业提交到一个小型集群,如何在MPI应用程序中获取正在运行的后端MPI类型(infiniband,以太网等)?
答案 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框架的详细程度。