10.3. PMIx与PRRTE的作用

Open MPI的早期版本构建在Open运行时环境(ORTE)之上。ORTE最初只是Open MPI代码库中的一小部分,但随着时间的推移,它逐渐发展成为一个独立的子项目。ORTE最终演变为进程管理接口Exascale(PMIx)标准及相应的OpenPMIx软件项目。随后OpenPMIx项目又发展出了自己的PMIx参考运行时环境(PRRTE)项目。在Open MPI的实现中,PRRTE已经实质上取代了ORTE。

Open MPI 运行时系统支持同时使用了这两个外部软件包。

PMIx和PRRTE都拥有众多配置与运行时选项。Open MPI试图向终端用户隐藏这些细节,转而提供一个统一的"一切都是Open MPI"的接口。Open MPI会将相关配置指令转换为PMIx和PRRTE的对应参数,从而向终端用户隐藏这些繁琐细节。

这是Open MPI开发者社区有意为之的设计决策:HPC和MPI已经足够复杂。我们不想让普通终端用户额外承担理解哪些抽象和配置选项属于Open MPI、哪些属于PMIx、哪些属于PRRTE的负担。

高级用户可以深入了解PMIx和PRRTE的内部机制,并在必要时调整额外的配置设置,但我们希望这种情况很少需要。

10.3.1. PMIx

面向百亿亿次计算的进程管理接口(PMIx)包被Open MPI用于管理与后端运行时系统之间的MPI进程通信与协调。

“后端运行时系统”的范围可以从一个低基础设施系统(仅使用ssh远程执行命令,无其他基础设施)到具有完整功能资源管理器和调度程序(如Slurm、PBS/Pro/Torque或LSF)的环境。

PMIx提供了一个统一的API,隐藏了与这些后端运行时环境通信的许多复杂性。Open MPI利用PMIx API来发现、通信并与任何受支持的后端运行时系统协调,而无需了解该系统的内部细节。

10.3.2. PRRTE

PMIx参考运行时环境,顾名思义,是一个利用PMIx API的参考运行时环境。它主要为那些本身不具备这些功能的环境提供运行时基础设施。具体来说,这通常意味着为那些没有分布式调度、文件暂存、远程标准输出/错误重定向概念,仅能通过ssh在远程节点执行命令的非调度环境提供基础设施。

Open MPI 使用 PRRTE 来处理后端运行时环境的实际问题,例如启动、监控、终止和回收远程进程。