如何检查 OpenMPI 中使用了哪些 MCA 参数?

sol*_*les 5 parallel-processing hpc distributed-computing mpi openmpi

OpenMPI代码库中,每个模块都有多个变体。调用时,您可以从模块化组件架构 (MCA)中选择您想要使用的mpirun模块。选项包括...

  • 集体算法 (coll):basic、tuned、inter、cuda、ml、sm、...
  • 字节传输层 (btl):openib、tcp、...
  • 点对点管理层 (pml):cm、ob1、...
  • 匹配传输层 (mtl):mxm、psm、...

您可以像这样指定 MCA 组件的选择:

mpirun --mca btl self,openib --mca pml ob1 -np $nProcs ./myprogram


我的问题:

  1. 如果我未指定某些 MCA 参数,默认值是什么?
  2. 是否有详细模式可以打印正在使用的所有 MCA 组件?(我尝试添加-v到我的mpirun命令中,但它没有打印任何额外的内容。)

Hri*_*iev 6

根据您拥有的 Open MPI 版本,ompi_info --param all all(旧版本)或ompi_info --all(新版本)会转储可用 MCA 参数的完整列表。默认值及其来源显示在列表中,并且大多数参数也已记录。某些 MCA 参数仅在设置了某些其他参数后才可用。例如,控制模块中集体通信操作算法选择的参数仅在设置为tuned时才可用。要列出这些,必须传递给它。coll_tuned_use_dynamic_rulestrueompi_info--mca coll_tuned_use_dynamic_rules true

要在MPI_Init()调用时刻转储所有 MCA 变量,请设置mpi_show_mca_paramsall。然后,每个 MCA 参数的值以及该值的来源都会转储到标准错误流。