4.16. 系统管理员建议
Open MPI 团队的多名成员拥有深厚的系统管理员背景;我们深知对系统管理员友好的软件价值所在。以下是 Open MPI 对系统管理员具有吸引力的部分原因:
简单、基于标准的安装
减少MPI安装的数量
能够设置系统级和用户级参数
关于Open MPI安装的可编写脚本的信息源
更多详情请参阅本节其余部分。
4.16.1. 设置全局MCA参数
MCA参数是一种在运行时调整Open MPI行为的方式。例如,MCA参数可以指定:
使用哪种互连网络
不应使用哪些互连网络
eager发送与rendezvous协议发送之间的尺寸差异
预固定多少已注册的缓冲区(例如用于InfiniBand)
预固定注册缓冲区的大小
…等等。
对于系统管理员来说,适当调整这些值并找到适合特定运行环境的"最优"设置非常有价值。这些值可以设置在一个全局文本文件中,默认情况下所有用户在运行Open MPI作业时都会继承这些设置。
例如,假设您有一个包含2个以太网网络的集群——一个用于NFS和其他系统级操作,另一个用于MPI作业。系统管理员可以配置Open MPI在系统级别不使用NFS TCP网络,这样当用户调用mpirun或mpiexec启动作业时,系统将自动仅使用专为MPI作业设计的网络。
查看如何设置MCA参数了解如何设置全局MCA参数。
4.16.2. 为全局Open MPI安装设置MCA参数
设置哪些全局MCA参数取决于您的具体集群配置以及通常运行的应用程序。
最佳做法是使用ompi_info(1)命令查看可用的相关参数。具体来说,ompi_info --all可用于显示每个插件所有可用参数。系统管理员通常喜欢调整的两个常见位置是:
仅允许特定网络: 如果您的集群同时具备高速互连网络(如InfiniBand)和低速以太网(例如1Gbps)。高速网络专用于MPI作业;控制网络则用于NFS和其他管理级任务。这种情况下,您可以简单地关闭Open MPI的TCP支持。
btl框架包含Open MPI的网络支持;此时您需要禁用tcp插件。可以通过在文件$prefix/etc/openmpi-mca-params.conf中添加以下行实现:btl = ^tcp
这会指示Open MPI加载所有BTL组件除了
tcp。考虑另一个例子:您的集群有两个TCP网络,一个用于NFS和管理级作业,另一个用于MPI作业。您可以通过在文件
$prefix/etc/openmpi-mca-params.conf中添加以下行,让Open MPI忽略NFS使用的TCP网络:btl_tcp_if_exclude = lo,eth0
该参数的值是要排除的设备名称。本例中,我们排除了
lo(本地回环,因为Open MPI有自己的内部回环设备)和eth0。针对特定网络调整参数: 每个网络插件都有多种可调参数。使用
ompi_info命令查看可用选项。您可以通过以下命令显示所有可用参数:shell$ ompi_info --param all all
注意
从Open MPI v1.8开始,
ompi_info按照MPI标准中MPI_T接口定义的级别对参数进行分类。您需要指定--level 9(或--all)来显示所有MCA参数。参阅此博客文章获取更多信息。shell$ ompi_info --level 9 # 或 shell$ ompi_info --all
请注意:可用的变量非常多。您可以通过命令行参数限制输出,仅显示特定框架或特定插件中的所有参数:
shell$ ompi_info --param btl all --level 9
显示所有BTL组件的所有参数,以及:
shell$ ompi_info --param btl tcp --level 9
仅显示
tcpBTL组件的所有参数。
4.16.3. 向全局Open MPI安装添加新插件
如果您向全局Open MPI安装中添加新组件(例如对新网络的支持),Open MPI将在运行时直接加载新插件——您的应用程序无需重新编译或重新链接。
参见本节获取更多详情。
4.16.4. 升级网络硬件与全局Open MPI安装
如果您升级了网络硬件,并且您的Open MPI安装使用的是共享库,您只需重新编译支持该网络的Open MPI组件并重新安装它们即可。
更具体地说,Open MPI将对底层网络的依赖从MPI应用程序转移到了Open MPI插件上。这是相比许多其他MPI实现方案的主要优势。MPI应用程序在运行时只需加载新的插件即可。
4.16.5. 用户自定义全局Open MPI安装
通常情况下,单个Open MPI安装(或少量Open MPI安装,具体取决于编译器兼容性,参见安装多个Open MPI副本以获取更多信息)就足以支持整个并行操作环境。
然而,系统级的Open MPI安装可以通过以下两种重要方式针对每个用户进行定制:
每用户MCA参数: 每位用户可以 设置自己的MCA参数集, 可能会覆盖系统范围的默认值。
每用户插件: 用户可以在
$HOME/.openmpi/components目录下安装自己的Open MPI插件。通过这种方式,开发者可以试验新组件,而不会影响系统中其他用户使用的Open MPI稳定性。高级用户也可以下载第三方组件(甚至可能是研究性质的组件)而不会影响其他用户。